相互冲突的验收测试

时间:2014-08-24 21:35:10

标签: ember.js ember-data qunit ember-cli acceptance-testing

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

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

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

这些是我的测试:

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');
  });
});

Full code

Running app

Running tests

更新

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

1 个答案:

答案 0 :(得分:0)

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

在测试中,您不必等待模型可用,并在没有记录的情况下呈现页面。

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