我们如何使用异步调用中引用的函数进行spyOn

时间:2015-02-13 15:55:39

标签: angularjs karma-jasmine

需要使用angularjs帮助Jasmine:

我为下面的角度代码创建了规范。如果我没有data1功能,我可以使用该服务。我需要知道我们如何使用异步调用中引用的函数进行spyOn。

'use strict';
angular.module('myApp.services', [])
    .factory("exampleService", function ($http) {
        var data1 = function () {
            return '/test';
        }
        return {
            data: function () {
                return data1();
            },
            getData: function () {
                return $http.get("/exampleUrl" + data1());
            }
        }
    });

规范代码下面是

'use strict';
describe('service', function () {
    var $httpBackend;

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

beforeEach(inject(function ($injector) {
    $httpBackend = $injector.get("$httpBackend");
    $httpBackend.when("GET", "/exampleUrl/test1")
        .respond(200, {
            value: "goodValue"
        });
}));

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

describe('exampleService successful http request', function () {
    it('.value should be "goodValue"', inject(function (exampleService) {

        spyOn(exampleService, 'data').and.callFake(function () {
            //done();
            return '/test1';
        });

        exampleService.getData().success(function (response) {
            expect(response.value).toEqual("goodValue");
        }).error(function (response) {
            //should not error with $httpBackend interceptor 200 status
            expect(false).toEqual(true);
        });

    }));
});
});

但是我会像这样得到例外

  

错误:意外请求:GET / exampleUrl / test

0 个答案:

没有答案