我似乎无法获得单元测试触发的模型挂钩和操作。
任何在ember-cli环境中执行此操作的示例/博客都将是一个很大的帮助!
我找到了这个链接Ember.js中路由的单元测试解决方案是什么?
但是route.model()正在抛出错误:transition未定义。
import { test, moduleFor } from 'ember-qunit';
moduleFor('route:sample', 'SampleRoute', {
// Specify the other units that are required for this test.
});
test("beforeModel hook works", function(){
var route = this.subject();
Ember.run(function(){
route.set("model", "Sample data");
})
console.log("Model set. Was beforeModel hook called?");
});
样品路线
import Ember from 'ember';
export default Ember.Route.extend({
beforeModel: function (transition) {
console.log("Inside before-model hook");
},
afterModel: function() {
console.log("In after-model hook");
}
});
不幸的是,事情并非如此。在设置model
之前不简单地调用beforeModel
,而在设置之后调用afterModel
。它们只是在该序列(beforeModel -> model -> afterModel
)中被调用的钩子,作为路由生命周期的一部分。
不幸的是,我还没有找到一个好的方法来对Routes进行单元测试。如果您有特定的beforeModel
逻辑需要测试,那么也许您可以直接调用beforeModel
?我发现Route逻辑最好通过验收样式测试进行测试,因为这样就可以像实际运行应用程序时一样调用Route。