testing backbone.js jasmine sinon

testing - Sinon JS "Intento envolver ajax que ya está envuelto"



backbone.js jasmine (2)

Recibí el mensaje de error anterior cuando ejecuté mi prueba. A continuación está mi código (estoy usando Backbone JS y Jasmine para probar). ¿Alguien sabe por qué pasa esto?

$(function() { describe("Category", function() { beforeEach(function() { category = new Category; sinon.spy(jQuery, "ajax"); } it("should fetch notes", function() { category.set({code: 123}); category.fetchNotes(); expect(category.trigger).toHaveBeenCalled(); } }) }


Lo que necesitas desde el principio es:

before -> sandbox = sinon.sandbox.create() afterEach -> sandbox.restore()

Luego llama a algo como:

windowSpy = sandbox.spy windowService, ''scroll''

  • Tenga en cuenta que utilizo Coffee Script.

Tienes que eliminar el espía después de cada prueba. Eche un vistazo al ejemplo de los documentos de sinon:

{ setUp: function () { sinon.spy(jQuery, "ajax"); }, tearDown: function () { jQuery.ajax.restore(); // Unwraps the spy }, "test should inspect jQuery.getJSON''s usage of jQuery.ajax": function () { jQuery.getJSON("/some/resource"); assert(jQuery.ajax.calledOnce); assertEquals("/some/resource", jQuery.ajax.getCall(0).args[0].url); assertEquals("json", jQuery.ajax.getCall(0).args[0].dataType); } }

Entonces, en tu prueba de jazmín debería verse así:

$(function() { describe("Category", function() { beforeEach(function() { category = new Category; sinon.spy(jQuery, "ajax"); } afterEach(function () { jQuery.ajax.restore(); }); it("should fetch notes", function() { category.set({code: 123}); category.fetchNotes(); expect(category.trigger).toHaveBeenCalled(); } }) }