Jasmine 2.0如何处理ajax请求
发布时间:2020-12-16 02:46:09 所属栏目:百科 来源:网络整理
导读:我想测试一个包含ajax请求的函数.测试应该等待ajax-request成功/失败.运行测试不起作用,因为它现在不会等待. 这个我想测试一下: this.requestServerBoxId = function(){ //ajax-request $.ajax({ url: this.host_addr+"/?getid="+this.name,type: 'POST',da
我想测试一个包含ajax请求的函数.测试应该等待ajax-request成功/失败.运行测试不起作用,因为它现在不会等待.
这个我想测试一下: this.requestServerBoxId = function() { //ajax-request $.ajax({ url: this.host_addr+"/?getid="+this.name,type: 'POST',data: {_data:this._data},success: function(data) { return IdSuccess(data); },error: function(data){ return false; } }); } function IdSuccess(data){ if(typeof data != undefined) return true; return false; } 这是我的测试: it("should call a function after ajax-success",function(){ expect(this.Process.requestServerBoxId()).toBe(true); }); 我试过间谍,但我猜我错了: spyOn($,'ajax' ).and.returnValue(123); 我希望每次ajax请求发出时,这个间谍都会返回123.但它不起作用. 解决方法
使用Jasmine 2.0,有一个全新的API用于测试ajax(以及其他所有内容).
代替: spyOn($,'ajax').and.returnValue(123); 在测试之前设置beforeEach和afterEach方法: beforeEach(function() { jasmine.Ajax.install(); jasmine.Ajax.stubRequest('YOUR_URL_HERE').andReturn({ responseText: 'YOUR_RAW_STUBBED_DATA_HERE' }); }); afterEach(function() { jasmine.Ajax.uninstall(); }); it('My Ajax Test',function() { // . . . code that makes an ajax request . . . }); 然后it测试将按预期执行其ajax请求. 请注意,这使您的ajax调用基本上同步但立即. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |