gpt4 book ai didi

ember.js - 测试时不存在初始化的依赖项

转载 作者:行者123 更新时间:2023-12-02 21:48:52 24 4
gpt4 key购买 nike

我正在使用 ember-cli 0.0.35,并通过初始化程序将依赖项注入(inject)到我的组件中。它在开发中效果很好,但当我运行测试时该属性不存在。测试似乎调用了 loadInitializers,但依赖关系并未显示在 this.subject({});

我不想手动注入(inject)它进行测试。有没有更好的方法来处理这个问题?

初始化器:

var FooServiceInitializer = {
name: 'foo',
initialize: function (container, application) {
application.inject('component:foo', 'foo', 'service:foo');
}
};
export default FooServiceInitializer;

测试失败:

moduleForComponent('bar', 'Component: Bar', {
setup: function() {
App = startApp();
component = this.subject({});
},
teardown: function () {
Ember.run(App, App.destroy);
}
});

test('Properties: foo', function() {
// Make sure we injected the service
ok(component.foo, 'foo is injected');
});

最佳答案

正如我之前所说,它确实适合集成测试,因为您此时正在测试容器(而不是 ic-ajax 创建的迷你容器)。

你真正的测试是这样的

test("root lists 3 colors", function(){
var c = App.__container__.lookup('component:foo-bar');
ok(c.foo.blah);
});

如果您对在测试期间使用容器感到内疚(您不应该这样做),您可以创建一个帮助程序,以避免在将来 api 发生变化时必须在各处修复它。

Ember.Test.registerHelper('containerLookup',
function(app, look) {
return app.__container__.lookup(look);
}
);

确保您之前定义了它

App.injectTestHelpers();

然后你的测试看起来像

test("root lists 3 colors", function(){
var c = containerLookup('component:foo-bar');
ok(c.foo.blah);
});

http://emberjs.jsbin.com/doxigu/edit

关于ember.js - 测试时不存在初始化的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24373165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com