如何在我的情况下测试http请求

时间:2015-05-05 20:50:30

标签: javascript angularjs unit-testing

我正在尝试在我的案例中测试一个rootcope http请求

我有类似

的东西

mainCont文件

$rootScope.testLoad = $http.get('/api/testapi/product');

TestCont文件

$rootScope.testLoad.success(function(product){
    console.log(product)
})

测试文件

describe('test', function () {
    var $httpBackend, $rootScope,  scope, mainCont, testCont;

    beforeEach(module('myApp'));

    beforeEach(inject(function (_$controller_, _$httpBackend_, _$rootScope_) {
        scope = _$rootScope_.$new();
        $rootScope = _$rootScope_;
        $httpBackend = _$httpBackend_;

        testCont = _$controller_('testCont', {
            $scope: scope
        });

        mainContr = _$controller_('mainCont', {
            $scope: scope
        });
    }));

    describe('test http request', function() {
        it('should check if the api is called', function() {       
            $httpBackend.expectGET('/api/testapi/product').respond(200);
            //I am not sure how to test the call in testCont file.  
        })
    })
});

我不确定如何测试testCont中的调用,因为当我运行测试时, 我收到了一个错误

TypeError: 'undefined' is not an object (evaluating '$rootScope.testLoad.success')

任何人都可以帮我解决这个问题吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

您已将testLoad定义为函数,因此需要通过添加括号来调用它。将您的代码更改为

$rootScope.testLoad().success(function(product){
    console.log(product)
})