我想测试一些向某个url发出请求的ajax函数。我尝试使用 nock 来模拟http但是它正在工作,因为我使用了Karma runner并且它向我抛出了一个关于“找不到模块'fs'”的错误。这是因为业力在浏览器上运行测试。
我怎么能这样做?谢谢(我尝试过 jasmine-ajax ,但它也不能以某种方式工作)。
据我所知,出现问题因为karma在浏览器中有效。但我怎么能与之斗争。
感谢您的帮助!
答案 0 :(得分:1)
jasmine-ajax肯定能奏效。这是来自工作代码的样本(jasmine over karma):
describe('RequesterTest', function(){
beforeEach(function(){
jasmine.Ajax.install(); // this enables interception
});
afterEach(function(){
jasmine.Ajax.uninstall(); // disables interceptions
})
it('makes $.ajax', function(){
spyOn($, 'ajax');
$.ajax({url: 'http://example.com'});
expect($.ajax).toHaveBeenCalled();
});
it('assert success callback for ajax', function(){
spyOn($, 'ajax');
var myCallback = function(){};
$.ajax({url: 'http://example.com', success: myCallback});
var actualAjaxOptions = $.ajax.calls.mostRecent().args[0];
expect(actualAjaxOptions).toEqual(jasmine.objectContaining({
success: myCallback,
}));
});
});
exapmle假设全局定义了jquery,没有模块/ AMD使用。