ember-cli:moduleFor失败,"试图注册一个未知的工厂"错误

时间:2015-01-10 17:38:03

标签: javascript ember.js ember-cli ember-qunit

使用ember-cli版本0.1.5,我无法让moduleFor在新版本中工作。

moduleFor使用documentation's example code时(对应用没有其他更改),运行ember test后出现以下错误:

TypeError: Attempting to register an unknown factory: `route:index`
    at Object.Container.register (http://localhost:4200/assets/vendor.js:14473:17)
    at isolatedContainer (http://localhost:4200/assets/test-support.js:24:19)
    at Object._callbacks.setup (http://localhost:4200/assets/test-support.js:150:23)
    at Object.Test.setup (http://localhost:4200/assets/test-support.js:1063:31)
    at http://localhost:4200/assets/test-support.js:1168:10
    at process (http://localhost:4200/assets/test-support.js:887:24)
    at http://localhost:4200/assets/test-support.js:476:5

由于除了在/tests/unit/index-test.js添加示例moduleFor示例之外我还未对该应用进行任何更改,这似乎可能是一个ember-cli错误?作为参考,下面是moduleFor示例的代码:

// my-app/tests/unit/index-test.js
import { test, moduleFor } from 'ember-qunit';

moduleFor('route:index', "Unit - IndexRoute", {
  setup: function () {},
  teardown: function () {}
});

test("it exists", function(){
  ok(this.subject());
});

1 个答案:

答案 0 :(得分:3)

路由似乎路由是自动生成的。但是当您使用moduleFor()运行单元测试时,除非您明确声明,否则不会成为IndexRoute。如果您想要IndexRoute进行测试,则需要手动定义它:

import Ember from 'ember'

IndexRoute = Ember.Route.extend();

export default IndexRoute

如果你真的只想依靠自动生成的那个,那么没有理由对其进行单元测试,因为没有其他功能可供测试。

我认为如果您打开LOG_ACTIVE_GENERATION,那么您就可以看到事情何时生成。

如果您确实要测试自动生成的测试,请在验收测试的上下文中进行测试,此时您可以使用路由器进行路由。

我的猜测是生成here