使用仅http请求angularjs对服务进行单元测试

时间:2014-10-28 14:48:54

标签: angularjs unit-testing service jasmine

我在服务中有一个名为getFrame的函数。该函数只返回$ http调用到控制器。

angular.module('app').factory('DemoFactory', function ($http) {
    function getFrame(id) {
        var url = 'http://localhost:8080/frames/' + id + '/';
        return $http.get(url);
    }

    return {
        getFrame: getFrame
    };
});

现在我想编写单元测试,我正在做如下:

describe('Service: DemoFactory', function () {

    // load the service's module
    beforeEach(module('app'));

    // Instantiate service
    var $httpBackend,
        DemoFactory;

    beforeEach(inject(function (_$httpBackend_, _DemoFactory_) {
        $httpBackend = _$httpBackend_;
        DemoFactory = _DemoFactory_;
    }));

    it('should send proper http request from getFrame', function () {
        $httpBackend.expectGET('http://localhost:8080/frames/1/').respond(200);
        DemoFactory.getFrame(1);
        $httpBackend.flush();
    });

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

使用给定的服务,我的目标是测试getFrame是否正在发出正确的http请求。所以我觉得我在这里做得很好。但有些事情让我想知道它阻止了没有任何期望。所以我需要确认,对于我写的服务,我可以按照描述进行单元测试。我是否需要在单元测试中使用其他任何东西?或者我可以以其他方式进行其他操作吗?

0 个答案:

没有答案