我的应用中遇到了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');
});
});
更新
升级到最新的ember-cli 0.0.43现在第一次测试失败消失了(npm install --save-dev ember-cli),但是第二次测试仍然每隔一次运行测试失败..
答案 0 :(得分:0)
我的猜测是,当您第一次访问该页面时,该模型尚不可用,并且是从后端请求的。
在测试中,您不必等待模型可用,并在没有记录的情况下呈现页面。
您使用jQuery从HTML元素中检索内容。当元素不可用时,jQuery会静默生成一个空集合,该集合始终返回空值。因此,测试失败。