Estoy contribuyendo a la red social de la diáspora* y la mayor parte del código de front-end está escrito con backbone. Jasmine se usa para probar ese código javascript, y descubrí que, dependiendo del orden de las pruebas, pueden fallar. Los datos no se limpian correctamente entre pruebas.
El proyecto es de código abierto, así que permítanme vincular el código directamente. Esta línea , por ejemplo, al comienzo de la prueba, a veces falla al decir Expected object not to have properties "reshared: 5" , que es el resultado de un remanente de esa prueba , ejecutada antes.
Sin embargo, observe que la colección se restableció correctamente antes de la segunda ejecución de prueba. Pero si coloca un punto de interrupción justo después de esa línea e ingresa target.unreadCountByType en la consola de Firefox, imprimirá Object { reshared: 5 } . Entonces, llamando a new app.collections.Notifications(); en realidad no restablece (completamente) la colección.
La colección se define en este archivo y, como puede ver, se inicializa correctamente ( unreadCountByType: {} ).
Creo que el problema está aquí . En esas líneas, hay un enlace a userChangedUnreadStatus que se realiza cada vez que se llama a la función de parse . Así que supongo que esto debería desvincularse en algún momento, poner aquí mi investigación está atascada, ya que no tengo idea de cómo funciona la columna vertebral.
Si desea ejecutar la prueba localmente, git clone git@github.com:diaspora/diaspora.git , luego genere los activos con bin/rake tests:generate_fixtures , inicie jasmine con RAILS_ENV=test bin/rake jasmine y luego ejecute la prueba visitando http://localhost:8888/?spec=app.collections.Notifications con su navegador web.
¡Cualquier ayuda es bienvenida!