【问题标题】:Conflicting acceptance tests相互矛盾的验收测试
【发布时间】:2014-10-18 01:12:01
【问题描述】:

我的应用中有一个问题,其中 2 个验收测试似乎发生冲突。 如果我运行测试,两个测试之一将失败。下次我运行它时,另一个会失败,依此类推。 如果一个一个运行,它们永远不会失败..

第一个测试是根据模型在其 toMany-relationship(异步)中是否有任何记录来测试访问 url 是否会重定向到正确的路径。 此测试失败并显示:错误:断言失败:无法在未定义的对象上使用“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 >

【问题讨论】:

  • 我也有类似的问题……你解决了吗?还是还没解决?

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


【解决方案1】:

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

在您的测试中,您无需等待模型可用并在没有记录的情况下访问页面。

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

【讨论】:

  • 嗯,我以为我确实在等待模型钩子完成.. visit(url) 访问给定的路由并返回一个承诺,当所有导致的异步行为完成时,该承诺就会履行。来源:emberjs.com/guides/testing/test-helpers/… 如果不是这样,您对我如何等待有什么建议吗?
猜你喜欢
  • 2022-12-04
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多