describe('Ajax', function () {
beforeEach(function () {
// Instantiate module and reference it with this.testUser
this.testUser = new TestUser();
// Reference sinon.spy with this.spySetToken
this.spySetToken = sinon.spy(this.testUser, 'setToken');
});
afterEach(function () {
this.spySetToken.restore();
});
it('Does it respond with that data', function () {
// Wrap $.ajax method and invoke success callback from ajax passing it a 'string'.
sinon.stub($, 'ajax').yieldsTo('success', 'Custom response string');
// test to see if my method that's inside the success callback is called with the string
expect(this.spySetToken.toHaveBeenCalledWith('Custom response string');
});
});我得到了“期望被调用的函数”。
如何成功测试Ajax成功方法?
发布于 2012-12-04 19:11:23
我以前可能会使用sinon.fakeServer,但我没有意识到它会触发最初的ajax调用的成功。
因此,解决方案是这样做:
beforeEach(function () {
var server = sinon.fakeServer.create();
this.server.respondWith(
"GET",
"/the/url" // This should marry up to the url being tested i believe
[200, {"Content-Type":"application/json"},
'{response:"json"}']
);
};
it('should set my model', function () {
this.server.respond();
expect(myModel.get('property').toEqual(');
}Sinon.server将触发特性中的ajax调用的成功,以便您可以测试成功方法中可能具有的任何功能。
https://stackoverflow.com/questions/13604816
复制相似问题