ember unit测试路线 - 这是未定义的

时间:2016-09-02 17:37:42

标签: unit-testing ember.js

我尝试为路线编写第一个单元测试。

项目/文件

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未定义。

1 个答案:

答案 0 :(得分:2)

如果您查看Ember Guides中的Testing Routes部分,您可以看到它的建议是将动作和功能分开。 我可以建议一下。 它使用send路由方法,例如:route.send('afterSave');

但是,如果您只想运行代码,请从测试代码中调用afterSave操作,例如:afterSave.bind(route)(project);。参考:bind function(我不建议这样做。我也不建议您检索以下操作:route.get('actions.afterSave')