成员单元测试路由-这是未定义的



我试图为路由编写我的第一个单元测试。

项目/文件

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')(

最新更新