tag solucionar descargar content como javascript backbone.js jasmine marionette

javascript - solucionar - Esperaba un espía, pero consiguió la función.



void(0) javascript href (3)

Necesitas entrar en el método real, que en este caso está en el prototipo.

describe(''When onGivePoints is fired'', function () { beforeEach(function () { spyOn(UsersBoardCollection.prototype, ''restartPolling'').andCallThrough(); app.vent.trigger(''onGivePoints''); }); it(''the board collection should be fetched'', function () { expect(UsersBoardCollection.prototype.restartPolling).toHaveBeenCalled(); }); });

Espiar el prototipo es un buen truco que puedes usar cuando no puedes llegar a la instancia real que deseas espiar.

Estoy tratando de implementar una prueba (1) para este módulo (2).
Mi propósito es verificar si la colección se recupera cuando se activa un evento en particular.
Como puede ver en mi comentario en (2), aparece el mensaje Error: Expected a spy, but got Function.
El módulo funciona pero la prueba falla. ¿algunas ideas?

(1)

// jasmine test module describe(''When onGivePoints is fired'', function () { beforeEach(function () { spyOn(this.view.collection, ''restartPolling'').andCallThrough(); app.vent.trigger(''onGivePoints''); }); it(''the board collection should be fetched'', function () { expect(this.view.collection.restartPolling).toHaveBeenCalled(); // Error: Expected a spy, but got Function. }); });

(2)

// model view module return Marionette.CompositeView.extend({ initialize: function () { this.collection = new UserBoardCollection(); this.collection.startPolling(); app.vent.on(''onGivePoints'', this.collection.restartPolling); }, // other code });


También estaba teniendo el mismo problema pero lo resolví pasando un argumento en la llamada a la función. Entonces tienes que escribir tu caso de prueba como este en el

var data = {name:"test"} spyOn(UsersBoardCollection.prototype, "restartPolling").and.callThrough(); UsersBoardCollection.prototype.restartPolling(data); expect(UsersBoardCollection.prototype.restartPolling).toHaveBeenCalled();


Tuve este error porque tenía dos versiones de sinon cargadas, o posiblemente no estaba iniciando correctamente sinon-jasmine. Cuando cargué explícitamente sinon y luego sinon jasmine en mi configuración de especificaciones, comenzó a funcionar correctamente.