我试图为路由编写我的第一个单元测试。
项目/文件
actions: {
afterSave(savedFile){
// ... some code
let controller = this.controllerFor('project.files');
// ...
}
}
测试:
test('save file', function(assert) {
let route = this.subject();
console.log(route);
let project;
Ember.run(() => {
project = route.get('store').createRecord('project', {
id: '1',
name: 'test'
});
let afterSave = route.get('actions.afterSave');
afterSave(project);
});
assert.ok(true);
})
我得到类型错误的问题:无法读取未定义的属性"controllerFor"。看起来this
未定义。
如果你看过Ember指南中的测试路线部分,你可以看到它的建议是将操作和功能分开。我可以建议一下。它使用send
路由方法,例如:route.send('afterSave');
但是,如果您只想运行您的代码,请从测试代码中调用afterSave
操作,例如:afterSave.bind(route)(project);
。Ref:bind函数(我不建议这样做。我也不建议您检索操作,如:route.get('actions.afterSave')
(