验收测试重定向到特定的 URL

Posted

技术标签:

【中文标题】验收测试重定向到特定的 URL【英文标题】:Acceptance test Redirecting to specific URL 【发布时间】:2016-08-09 20:42:21 【问题描述】:

我在 ember-cli 上创建了一个验收测试,以检查用户何时访问某个 URL,然后单击该页面上的“取消”按钮,该页面应重定向到其他 URL。

运行测试时出现此错误:

"如果取消按钮是,则在重定向到上一个 URL 期间承诺被拒绝 clicked: Element .close-button not found"。

但是我的模板上有那个元素。有人可以建议我在这里缺少什么或建议我可以阅读以解决此错误的文档吗?

这是我的验收测试:

import  test  from 'qunit';
import moduleForAcceptance from '/tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance | test/company');
test('Redirects to previous URL if cancel button is clicked', function() 
    return visit('test/company/add').then(function()
      return click('.close-button');
    ).then(function(assert)
      assert.equal(currentURL(), 'test/company');
    );
);

我也试过这个测试,但我不断收到类似的错误:

test('Redirects to previous URL if cancel button is clicked', function(assert) 
  visit('/test/company/add');
  click ('.close-button');
  andThen(function() 
    assert.equal(currentURL(), '/test/company');
  );
);

这是错误:

错误:找不到元素 .close-button。

这是我有取消按钮(add.hbs)的模板的一部分

<div class="form-add">
    <a href="#" class="close-button" action 'cancel'>Close</a>
</div>

这是控制器,其中定义了“取消”操作:

actions: 
    cancel() 
       if (this.get('isSaved')) 
           return;
       
         this.transitionToRoute('test/company');
    

【问题讨论】:

您是否尝试在第二种方法中将 click 放入您的 andThen() 中? 【参考方案1】:

访问和单击是返回承诺的测试助手。通常,一旦你的承诺得到解决,你将执行进一步的测试。

尝试这样做:

test('Redirects to previous URL if cancel button is clicked', function(assert) 
  visit('/test/company/add');  
  andThen(()=>
    click ('.close-button');
    andThen(()=>
        assert.equal(currentURL(), '/test/company');
    )  
  );
);

【讨论】:

感谢您的帮助,我尝试了您的代码,但仍然遇到同样的错误。我不知道还能做什么。它在页面上找不到该元素。

以上是关于验收测试重定向到特定的 URL的主要内容,如果未能解决你的问题,请参考以下文章

用于节点 JS 验收测试的开发 API

如何在 Codeception 命令行的验收测试中使用动态 url

可读和可维护的验收测试框架

使用 PHP Codeception 验收测试检查源代码中的单次出现

在项目中途实施单元测试和验收测试

软件测试基础理论体系学习8-什么是验收测试?验收测试的内容是什么?过程是什么?有什么测试策略?