jasmine-ajax在使用浏览器请求时不发送模拟请求

时间:2014-07-29 22:20:31

标签: javascript ajax unit-testing mocking jasmine

我正在尝试使用jasmine插件mock-ajax来测试一些ajax请求。测试正确识别何时发出了ajax请求,并且可以验证请求URL之类的内容。但是当按照茉莉花自述文件中的说明立即返回示例时,我无法调用成功回调。我正在使用浏览器请求来处理我的请求。

测试代码在这里

var request = require('browser-request');

var loaded = false;

exports.loaded = function () {
    return loaded;
};

exports.fetch = function (url) {
    request(url, function(er, response, body) {
        loaded = true;
    });
};

测试代码在这里

var stationData, resoursePath;

describe('Fetch station data after browser load', function () {
    beforeEach(function(){
        resoursePath = 'data/data.json';
        jasmine.Ajax.install();
        stationData = require('../../app/js/station-data.js');
    });

    afterEach(function() {
        jasmine.Ajax.uninstall();
    });

    it('should start with no data loaded',function () {
        expect(stationData.loaded()).toBe(false);
    });

    it('should load data from server', function () {
        stationData.fetch(resoursePath);
        expect(jasmine.Ajax.requests.mostRecent().url).toBe(resoursePath);
    });

    it('should be loaded after a successful response', function () {
        jasmine.Ajax.stubRequest(resoursePath).andReturn({
            "responseText": 'immediate response'
        });
        stationData.fetch(resoursePath);
        expect(stationData.loaded()).toBe(true);
    });
});

前两个测试通过,但第三个不通过。

0 个答案:

没有答案