Sinon JS " попытался обернуть ajax, который уже завернут"
Я получил сообщение об ошибке выше, когда я запустил свой тест. Ниже приведен мой код (я использую Backbone JS и Jasmine для тестирования). Кто-нибудь знает, почему это происходит?
$(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();
}
})
}
2 ответа:
вы должны удалить шпиона после каждого испытания. Взгляните на пример из sinon docs:
{ 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); } }
Так что в вашем тесте Жасмин должно выглядеть так:
$(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(); } }) }