在Ember组件测试中对子组件进行存根

Sam*_*lom 2 ember.js

假设我有一个深层嵌套的组件结构,我不想存根所有子组件及其子组件的依赖项(主要是服务和ajax调用).有没有办法将Ember.Component.create({})容器注入容器中以替换该测试的真实容器.它似乎应该是可能的,但我似乎无法弄清楚语法或在任何地方找到它.

Sam*_*lom 8

经过多次试验后,结果非常简单:

moduleForComponent('test-component', 'Integration | Component | test', {
    integration: true,
    beforeEach: function () {
        this.owner.register('component:test-component2', Ember.Component.extend());
    }
});
Run Code Online (Sandbox Code Playgroud)

现在{{test-component2}}里面{{test-component}}将成为默认的Ember组件.

也存根模板添加this.owner.register('template:components/test-component2', '')beforeEach回调.

对于Ember 2使用this.register(...)而不是this.owner.register(...).

编辑:基于注释更新(Ember 3语法,模板存根)

  • 您可能也希望将其模板存根`this.register('template:components/test-componet2','')` (3认同)
  • 在 Ember 3.x 中,它是:`this.owner.register(...)` (2认同)