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