2012-01-09 16 views
8

Recientemente hemos empezado a utilizar el indicador Ember.testing no documentado en nuestras especificaciones de jazmín que efectivamente desactiva la característica de ejecución automática runloop. Hemos descubierto que esto requiere que seamos un poco más explícitos sobre el código de ajuste manual en los ejecutables, pero también nos ha dado más estabilidad en nuestras especificaciones, ya que pone de relieve los problemas en la forma en que hemos escrito las especificaciones y ayuda a documentar cuándo las uniones son importantes para el código bajo prueba.¿Se recomienda establecer Ember.testing = true para las pruebas unitarias?

¿Existe una línea oficial sobre el uso de esta función? Parece que ha tenido un impacto bastante positivo en nuestra aplicación, pero sospecho que la mayoría de la gente no lo sabe.

Respuesta

-1

Nunca he usado la bandera Ember.testing. Me interesaría saber cómo la habilitación ha resultado en más estabilidad en sus especificaciones. He estado probando aplicaciones de Ember en Jasmine sin ningún problema.

He tenido éxito después del uso de la suite de pruebas Ember de Ember.run() y Ember.run.sync() cuando es necesario.

+1

La estabilidad parecía provenir principalmente de los desarrolladores que se ven obligados a pensar en el ciclo de ejecución, cómo se relaciona con el código que se está ejecutando y las afirmaciones que se realizan en ese código. Una gran parte de los internos de Ember dependen de que haya un bucle de ejecución actual o lanzan una excepción, por lo que al no tener un runloop de ejecución automática, es fácil ver dónde una especificación debe envolver las llamadas al código de la aplicación. –

+2

Tuvimos una serie de fallas intermitentes debido a las especificaciones que a veces pasaron en lugares donde creo que deberían haber fallado constantemente. Establecer Ember.testing = true garantiza que estas especificaciones siempre fallen. –

7

Sí, definitivamente debe establecer Ember.testing = true en sus pruebas.

Sin Ember.testing, los runloops se programan automáticamente con setTimeout, que es de donde proviene la inestabilidad que está notando.

Nota: En estos momentos, cuando se activa Ember.testing, se termina necesariamente hasta anteponiendo muchas de las líneas en su código de prueba con Em.run =>, como

Em.run => obj.set('someProperty', true) 

Si se olvida, se quejan en voz alta, o propiedades/estado de la aplicación no se habrá actualizado cuando intente ejecutar las afirmaciones en su contra.

Tal vez esto se mejore algún día, pero por ahora no hay nada de qué preocuparse si su código de prueba se rocía con llamadas run.

Cuestiones relacionadas