読者です 読者をやめる 読者になる 読者になる

Jasmine+sinon.jsでjQuery.ajaxが呼ばれているかテストする

sinon.spyを使うと$.ajaxが呼ばれているかをテストできます。
このときはBackboneのCollectionでfetchが正しいパラメータで呼び出されているかをテストしてみました。

describe("some ajax test", function(){
	beforeEach(function(){
		this.ajaxSpy = sinon.spy($, "ajax");
		this.paramSpy = sinon.spy($, "param");
		this.collection = new MyCollection();
	},
	
	afterEach(function() {
		$.ajax.restore();
		$.param.restore();
	});
	
	it("should make some ajax request using these parameters", function(){
		var start = "2012/6/1";
		var theEnd = "2012/6/31";
		this.collection.someAjaxCall(start, theEnd); 
		expect(this.ajaxSpy).toHaveBeenCalledOnce();
		expect(this.paramSpy).toHaveBeenCalledWith({start: "2012/6/1", theEnd: "2012/6/31"});
	});
});