ember.js - La dependencia inicializada no está presente cuando se prueba
ember-cli ember-qunit (1)
Estoy usando ember-cli 0.0.35 e inyectando una dependencia en mi componente a través de un inicializador. Funciona muy bien en el desarrollo, pero la propiedad no está presente cuando realizo pruebas. Parece que la prueba llama a loadInitializers, pero la dependencia no se muestra en this.subject ({});
No quiero inyectarlo manualmente para las pruebas. ¿Hay una mejor manera de manejar esto?
Inicializador:
var FooServiceInitializer = {
name: ''foo'',
initialize: function (container, application) {
application.inject(''component:foo'', ''foo'', ''service:foo'');
}
};
export default FooServiceInitializer;
Prueba fallida:
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'');
});
Como dije antes, realmente se presta para una prueba de integración ya que está probando el contenedor en este punto (y no el mini contenedor creado por ic-ajax).
Tu verdadera prueba está en la línea de esto
test("root lists 3 colors", function(){
var c = App.__container__.lookup(''component:foo-bar'');
ok(c.foo.blah);
});
Si se siente culpable por usar el contenedor durante la prueba (lo cual no debería hacer), puede crear un ayudante para evitar tener que arreglarlo por completo cuando / si una API cambia en el futuro.
Ember.Test.registerHelper(''containerLookup'',
function(app, look) {
return app.__container__.lookup(look);
}
);
Asegúrate de definir esto antes
App.injectTestHelpers();
y luego su prueba se vería como
test("root lists 3 colors", function(){
var c = containerLookup(''component:foo-bar'');
ok(c.foo.blah);
});