加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 间隔函数,当角度控制器初始化时执行

发布时间:2020-12-17 08:08:56 所属栏目:安全 来源:网络整理
导读:我想测试以下函数实际上是使用茉莉花调用该控制器的初始化。似乎使用间谍是一种方式,它只是不能像我所期望的那样工作,当我把它的期望在“它”块被调用。我想知道是否有一种特殊的方法来检查在调用范围函数中是否调用了某些东西,但是在控制器本身中。 App.
我想测试以下函数实际上是使用茉莉花调用该控制器的初始化。似乎使用间谍是一种方式,它只是不能像我所期望的那样工作,当我把它的期望在“它”块被调用。我想知道是否有一种特殊的方法来检查在调用范围函数中是否调用了某些东西,但是在控制器本身中。
App.controller('aCtrl',[ '$scope',function($scope){

    $scope.loadResponses = function(){
        //do something
    }

    $scope.loadResponses();

}]);

// spec文件

describe('test spec',function(){

    beforeEach(
    //rootscope assigned to scope,scope injected into controller,controller instantiation.. the expected stuff

        spyOn(scope,'loadResponses');
    );

    it('should ensure that scope.loadResponses was called upon instantiation of the controller',function(){
         expect(scope.loadResponses).toHaveBeenCalled();
    });
});
您需要根据创建的范围自己初始化控制器。问题是,您需要重新构建代码。你不能监视一个不存在的函数,但你需要在调用函数之前先spyOn。
$scope.loadResponses = function(){
    //do something
}
// <-- You would need your spy attached here
$scope.loadResponses();

由于您不能这样做,您需要将$ scope.loadResponses()调用到别处。

成功侦听范围函数的代码是:

var scope;
beforeEach(inject(function($controller,$rootScope) {
    scope = $rootScope.$new();
    $controller('aCtrl',{$scope: scope});
    scope.$digest();
}));
it("should have been called",function() {
    spyOn(scope,"loadResponses");
    scope.doTheStuffThatMakedLoadResponsesCalled();
    expect(scope.loadResponses).toHaveBeenCalled();
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读