0

我正在尝试Jasmine使用具有无限递归函数的控制器进行单元测试,我在创建控制器时调用该函数,如下所示:

angular.module('myApp')
.controller('LargeHomeCtrl', ['$scope', '$timeout', 
    function ($scope, $timeout) {

    //some code to be tested

    function updateInfo () {
    //do some things
        $timeout(updateInfo(), 8000);
    }

    updateInfo();
}]);

但是我不能像下面的代码那样注入这个控制器进行单元测试,否则我会收到这个错误:

WARN [PhantomJS 1.9.8 (Linux)]: Disconnected (1 times), because no message in 10000 ms.

beforeEach(inject(function ($controller, _$rootScope_) {
    spyOn($controller, 'updateInfo').and.returnValue(null);
    $scope = _$rootScope_;
    $ctrl = $controller('LargeHomeCtrl', {
        $scope: $scope
    });
}));

我没有看到任何其他模拟该函数的方法,但如果我在控制器注入之前定义它,我会收到一个错误(updateInfo() method does not exist),因为控制器尚未注入。

我尝试像这样用 spyOn 模拟我的函数 updateInfo():

spyOn($controller, 'updateInfo').and.returnValue(null);

我缺少一些基本的东西(我是茉莉花的新手)?我能做什么?

4

0 回答 0