所以,我一直在试图测试一个Ember控制器,问题是,控制器位于一个包含多个控制器的coffeeScript文件中。
现在,ember testing guide says,为了测试控制器,我应该使用' moduleFor'像这样的助手:
moduleFor(fullName [, description [, callbacks]])
就我而言,全名是:" CustomersIndexController" ,但因为它包含在" customers_controller.coffee"在它自己包括多个控制器,测试它成为问题。
在网上无尽挖掘之后,我found out(如果我错了,请纠正我)解析器只关心文件名,而不是关于导出默认myModel&#的名称39;提供
为了更清楚,这是我的" customers_controller.coffee" :
`export { CustomersIndexController, CustomersItemController }`
CustomersIndexController = Ember.ArrayController.extend
#Code goes here ......
CustomerItemController = Ember.ObjectController.extend
#Code goes here .....
这是customers-controller-test.coffee
文件:
`import { test, moduleFor } from 'ember-qunit';`
moduleFor("controller:customers-index-controller", 'C Controller')
test "it's an App.Controller", -> ok(@subject())
我已经尝试了我的大脑可以产生的所有想法......没有任何运气(将控制器名称从camelCase更改为dasherized,到绝对路径,甚至尝试导入customers_controller.coffee),但我一直得到:
Setup failed on it's a App.Controller: Attempting to register an unknown factory: `controller:customers-index-controller`
非常感谢任何帮助/建议/链接。
答案 0 :(得分:2)
您应该能够在较低的camelCase中定义它。
moduleFor('controller:postsIndex', 'Posts Index Controller');
答案 1 :(得分:0)
如果你看一下使用ember-cli的解析器的文档,你会发现它确实只关心文件的名称,以及它们的默认导出是什么:http://www.ember-cli.com/#using-modules
在您的情况下,您需要将控制器拆分为多个文件,以便解析器可以正确地找到并实例化它们。所以,这两个文件将是:
这是假设您使用的是ember-cli。如果您仍在使用ember-app-kit,则可能需要稍微调整一下,但应该采用相同的基本想法。