Ember.js 测试具有服务依赖性的组件
Ember.js testing component with service dependency
我正在尝试为我的插件编写测试,但遇到了一些奇怪的行为。
我创建了一个服务(通过 ember-cli generate),它在组件内部使用。
当实际应用程序 运行 一切正常时。
但是,在测试该组件时,我收到一条错误消息,指出在尝试访问其任何 properties/methods.
时服务未定义
在测试中,我将服务置于 "needs" 中,如下所示:
needs: ['service:my-service']
"Needing" 其他组件(例如内部使用的子组件)按预期工作,服务异常失败。
是否需要执行任何其他步骤?
运行ember-cli 0.1.12。
当您生成服务时,它还会生成一个初始化程序,其工作是将服务注入到您需要它的各个地方。
因此,当您 运行 acceptance 测试时,您的应用程序将启动并且初始化程序将 运行,因此服务将可用。
但是,当 unit 测试组件时,您会得到一个干净的容器(更适合测试)。你只需要注入你需要的东西:
moduleForComponent('foo-bar', null, {
setup: function(container) {
container.register('service:foo', FooService);
container.injection('component', 'fooService', 'service:foo');
}
});
我设法通过使用最新的 Ember.inject
API 可用的新 Ember.inject
API 1.10 release.
显然新的注入 API 是为了在未来取代 needs
,它也适用于单元测试。
我们刚刚设法让一个使用 needs: ['service:myService']
而不是 needs: ['service:my-service']
工作。
我正在尝试为我的插件编写测试,但遇到了一些奇怪的行为。
我创建了一个服务(通过 ember-cli generate),它在组件内部使用。 当实际应用程序 运行 一切正常时。
但是,在测试该组件时,我收到一条错误消息,指出在尝试访问其任何 properties/methods.
时服务未定义在测试中,我将服务置于 "needs" 中,如下所示:
needs: ['service:my-service']
"Needing" 其他组件(例如内部使用的子组件)按预期工作,服务异常失败。
是否需要执行任何其他步骤?
运行ember-cli 0.1.12。
当您生成服务时,它还会生成一个初始化程序,其工作是将服务注入到您需要它的各个地方。
因此,当您 运行 acceptance 测试时,您的应用程序将启动并且初始化程序将 运行,因此服务将可用。
但是,当 unit 测试组件时,您会得到一个干净的容器(更适合测试)。你只需要注入你需要的东西:
moduleForComponent('foo-bar', null, {
setup: function(container) {
container.register('service:foo', FooService);
container.injection('component', 'fooService', 'service:foo');
}
});
我设法通过使用最新的 Ember.inject
API 可用的新 Ember.inject
API 1.10 release.
显然新的注入 API 是为了在未来取代 needs
,它也适用于单元测试。
我们刚刚设法让一个使用 needs: ['service:myService']
而不是 needs: ['service:my-service']
工作。