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

Jasmine how to mock http request (for fetch and XMLXtthpRequest)

我想测试一些向 url 发出请求的 ajax 函数。我尝试使用 nock 来模拟 http 但它正在工作,因为我使用 Karma 运行ner 并且它向我抛出一个关于 "can't find module 'fs'" 的错误。这是因为业力 运行 在浏览器上测试。

我该怎么做?谢谢(我尝试了 jasmine-ajax 但它也无法正常工作)。

据我了解,出现问题是因为 karma 在浏览器中起作用。但是我怎么能与之抗争呢。

感谢您的帮助!

jasmine-ajax 确实有效。这是来自工作代码的示例(茉莉花在业力上):

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 全局定义并且没有 modules/AMD 用法。