Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript httpBackend预期请求仅一次_Javascript_Angularjs_Jasmine_Httpbackend - Fatal编程技术网

Javascript httpBackend预期请求仅一次

Javascript httpBackend预期请求仅一次,javascript,angularjs,jasmine,httpbackend,Javascript,Angularjs,Jasmine,Httpbackend,经过一番尝试和错误,我终于让Jasmine注入了一个模拟Angular服务,并在同一个套件中提供了$httpBackend: describe('services.system', function () { var httpBackend, nodeService; beforeEach(module('services.system')); beforeEach(function() { module(function($provide) {

经过一番尝试和错误,我终于让Jasmine注入了一个模拟Angular服务,并在同一个套件中提供了
$httpBackend

describe('services.system', function () {

    var httpBackend, nodeService;

    beforeEach(module('services.system'));

    beforeEach(function() {
        module(function($provide) {
            $provide.factory('authService', function() { return mockAuthService; });
        });

        inject(function(_nodeService_, $httpBackend) {
            httpBackend = $httpBackend;
            nodeService = _nodeService_;
        });
    });

    afterEach(function() {
        httpBackend.verifyNoOutstandingExpectation();
        httpBackend.verifyNoOutstandingRequest();
    });

    describe('version', function () {
        it('should return the current version', function () {
            httpBackend.expectGET('/service/version').respond(200, { version: "1.2.3"});

            var done = false;
            runs(function() {
                nodeService.getProductInfo().then(function (info) {
                    expect(info.version).toEqual('1.2.3');
                    done = true;
                }, function(error) {
                    expect("test received error: " + error).toFail();
                    done = true;
                });

                httpBackend.flush();
            });

            waitsFor(function(){
                return done;
            });
        });
    });
});
现在我想编写一个测试,该测试只需要一次GET,两个连续的调用应该返回一个缓存响应,而不是向服务器发出另一个请求。对于spies,您通常可以通过断言
myObj.calls.count()
来实现这一点


如何验证HTTP请求只被调用过一次?

如果缓存不是您已经实现的东西,而是框架的一部分,那么测试它就没有意义了。测试框架没有意义,很好。我将结果存储在一个变量中,因此对getProductInfo()的下一次调用应该是从内存中提取,而不是执行另一个HTTP请求。
expectGET
必须为我认为的每个请求设置。因此,如果您的测试中只有on
expectGET
,并且测试通过,那么只会发出一个请求。