我尝试为路线编写第一个单元测试。
项目/文件
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);
})
我遇到的问题 TypeError:无法读取未定义的属性'controllerFor'。
看起来this
未定义。
答案 0 :(得分:2)
如果您查看Ember Guides中的Testing Routes部分,您可以看到它的建议是将动作和功能分开。
我可以建议一下。
它使用send
路由方法,例如:route.send('afterSave');
但是,如果您只想运行代码,请从测试代码中调用afterSave
操作,例如:afterSave.bind(route)(project);
。参考:bind function(我不建议这样做。我也不建议您检索以下操作:route.get('actions.afterSave')
)