ember.js ember-cli ember-qunit

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); });

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