首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sinon JS“尝试包装已包装的ajax”

Sinon JS“尝试包装已包装的ajax”
EN

Stack Overflow用户
提问于 2012-01-12 04:06:41
回答 1查看 33.6K关注 0票数 65

当我运行测试时,我得到了上面的错误消息。下面是我的代码(我使用Backbone JS和Jasmine进行测试)。有人知道为什么会这样吗?

代码语言:javascript
复制
$(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();
     }
  })
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-12 04:21:33

每次测试后你都得把间谍赶走。看看sinon文档中的示例:

代码语言:javascript
复制
{
    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);
    }
}

所以在你的jasmine测试中应该是这样的:

代码语言:javascript
复制
$(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();
     }
  })
}
票数 99
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8825870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档