gpt4 book ai didi

测试 ember 嵌套路由失败

转载 作者:行者123 更新时间:2023-11-28 20:44:27 26 4
gpt4 key购买 nike

我正在使用 karma 和 qUnit(在遵循 this tutorial 之后)来测试我的 Ember 应用程序。大部分情况下进展顺利,但我遇到了一个没有意义的问题。

给定以下 2 个测试:

test('can get to products', function() {
visit('/products/')
.then(function() {
ok(find('*'));
});
});


test('can get to catalogues', function() {
visit('/products/catalogues')
.then(function() {
ok(find('*'));
});
});

第一个会运行良好。测试运行器到达 /products 并找到一些东西。

但是,第二个测试在控制台中返回错误:

Error: Assertion Failed: You have turned on testing mode, which disabled the run-loop's autorun. You will need to wrap any code with asynchronous side-effects in an Ember.run

我打开了转换日志,测试运行器在抛出错误之前正在访问 products.catalogues.index

有什么想法吗?或者它只是 ember 测试工具中的一个错误?

两者都是路由器内部定义的有效路由...

最佳答案

错误的最后一部分是解决此问题的关键。您必须确保进行异步调用的任何代码都包含在 Ember.run 中。这包括像 create 和 set 方法这样简单的事情。

如果你有类似的东西

App.ProductsRoute = Ember.Route.extend({
model: function() {
return [
Ember.Object.create({title: "product1"}),
Ember.Object.create({title: "product2"})
]
}
});

重构为

App.ProductsRoute = Ember.Route.extend({
model: function() {
return [
Ember.run( Ember.Object, "create", {title: "product1"} ),
Ember.run( Ember.Object, "create", {title: "product2"} )
]
}
});

App.ProductsRoute = Ember.Route.extend({
model: function() {
return Ember.run(function() {
return [
Ember.Object.create({title: "product1"}),
Ember.Object.create({title: "product2"})
]
});
}
});

如果您发布了您的 /products 代码,那么给出更具体的答案会更容易。

关于测试 ember 嵌套路由失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com