我无法使用 ember-cli 版本 0.1.5 让moduleFor
在全新版本中工作。
使用文档的示例代码进行moduleFor
(并且没有对应用程序进行其他更改)时,我在运行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());
});
在路由到时自动生成的。但是,当像您一样使用 moduleFor()
运行单元测试时,除非您显式声明一个单元测试,否则不会有IndexRoute
。如果你想要一个可以测试IndexRoute
,你需要手动定义它:
import Ember from 'ember'
IndexRoute = Ember.Route.extend();
export default IndexRoute
如果你真的只想依赖自动生成的,没有理由对它进行单元测试,因为没有额外的功能要测试。
我认为如果你打开LOG_ACTIVE_GENERATION
那么你可以看到什么时候生成东西。
如果您确实要测试自动生成的,请在验收测试的上下文中进行,此时您可以使用路由器在那里路由。
我的猜测是它在这里生成。