Jasmine如何模拟http请求(用于获取和XMLXtthpRequest)

时间:2016-12-23 15:29:57

标签: http webpack mocking jasmine karma-runner

我想测试一些向某个url发出请求的ajax函数。我尝试使用 nock 来模拟http但是它正在工作,因为我使用了Karma runner并且它向我抛出了一个关于“找不到模块'fs'”的错误。这是因为业力在浏览器上运行测试。

我怎么能这样做?谢谢(我尝试过 jasmine-ajax ,但它也不能以某种方式工作)。

据我所知,出现问题因为karma在浏览器中有效。但我怎么能与之斗争。

感谢您的帮助!

1 个答案:

答案 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使用。