相互冲突的验收测试

Lar*_*sJK 5 acceptance-testing qunit ember.js ember-data ember-cli

我的应用程序中有一个问题,其中2个验收测试似乎发生冲突.如果我运行测试,则2个测试中的一个将失败.下次我运行它时另一个会失败等等.如果一个接一个地运行它们永远不会失败

第一个测试是测试访问URL将根据模型是否在其toMany-relationship(异步)中有任何记录而重定向到正确的路径.此测试失败并显示:错误:断言失败:无法在未定义的对象上使用'currentPath'调用get.

第二个测试是检查toMany关系是否在无序列表中呈现的测试.此测试失败,因为list-item的内容为空.

这些是我的测试:

test('visiting /categories/#', function() {
  visit('/categories/1');

  andThen(function() {
    equal(currentPath(), 'categories.category.subcategories.index');
  });
});

test('renders products', function () {
  visit('/categories/2/products');

  andThen(function () {
    var list = find('#product-list li');
    equal(list.length, 2);

    var first = find('#product-list li').eq(0);
    equal(first.text(), 'A4');

    var last = find('#product-list li').eq(1);
    equal(last.text(), 'A3');
  });
});
Run Code Online (Sandbox Code Playgroud)

完整代码

运行应用程序

运行测试

更新:

升级到最新的ember-cli 0.0.43现在第一次测试失败已经消失了(npm install --save-dev ember-cli),但是第二次测试仍然每隔一次运行测试失败.

And*_*aus 0

我的猜测是,当您第一次访问该页面时,该模型尚不可用,并且是从后端请求的。

在您的测试中,您不会等待模型变得可用,并在渲染没有记录的情况下访问该页面。

您可以使用 jQuery 从 HTML 元素中检索内容。当元素不可用时,jQuery 会默默地生成一个空集合,该集合始终返回空值。因此,测试失败。