2017-06-05 50 views
0

我基本上密新:测试灰烬密新 - 作为控制器

export default Ember.Mixin.create({}}; 

我用这样的:

export default Ember.Controller.extend(EditControllerMixin, {...}); 

一切正常应用。

但是我想要做的,不知道如何去是编写测试是这样的:

const ctrl = Ember.Controller.extend(MyMixin, {...}).create(); 
ctrl.actions.someAction(); 
// assert if behaving as expected 

的问题是,目前我有注射作为needs: [...]麻烦不生效,因为我正在动态地创建控制器,所以我猜没有Ember容器存在,这就是为什么。另外this.get()不起作用。所以我基本上想创建动态控制器并将其集成到Ember运行时。希望得到一些完整的例子。

谢谢。

回答

0

请不要这样做。单独测试mixin(尽量不要求工作)。

要测试needs - 创建控制器单元测试并在测试needs包括您需要的每个控制器。

但是:

  • needs在控制器已经过时 - Ember.inject.controller()是新的语法。
  • 在控制器之间创建依赖关系是不好的(并且很难测试 - 正如您所见) - 为什么不创建易于测试的服务?即使包含在mixin中,服务也应该很容易测试:)