单元测试一个余烬控制器,位于包含多个控制器的文件中



所以,我一直在尝试qunit测试Ember控制器,问题是,控制器在coffeeScript文件内,包含多个控制器。

现在,ember测试指南说,为了测试一个控制器,我应该像这样使用'moduleFor'帮助器:

moduleFor(fullName [, description [, callbacks]])

在我的情况下,全名是说:"CustomersIndexController",但因为它包含在"customers_controller"。咖啡",在它本身包含多个控制器,测试它成为问题。

经过无休止的在线挖掘,我发现(如果我错了请纠正我),解析器只关心文件名,而不是关于'export default myModel'提供的名称

为了更清楚,这里是我的"customers_controller"。咖啡":

`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`

任何帮助/建议/链接都是非常感谢的。

你应该能够用骆驼小写来定义它。

moduleFor('controller:postsIndex', 'Posts Index Controller');
http://jsbin.com/ruhalota/1/edit

如果您看一下ember-cli解析器的文档,您会发现它确实只关心文件的名称,以及它们的默认导出:http://www.ember-cli.com/#using-modules

在您的示例中,您需要将控制器拆分为多个文件,以便解析器可以找到并正确地实例化它们。所以,这两个文件是:

  • app/controllers/客户/index.coffee
  • app/controllers/客户/item.coffee

这些都是假设您正在使用ember-cli。如果你还在使用ember-app-kit,你可能需要稍微调整一下,但是基本的思路还是一样的。

相关内容

  • 没有找到相关文章

最新更新