AngularJS - Jasmine - 无法在控制器回调函数中测试服务
创始人
2024-10-27 00:00:26
0

要在AngularJS控制器的回调函数中测试服务,可以使用Jasmine的spyOn方法来模拟服务的方法调用。下面是一个示例代码:

// 服务定义
app.service('myService', function() {
  this.getData = function() {
    // 实际的服务方法实现
    return "Hello World";
  }
});

// 控制器定义
app.controller('myController', function($scope, myService) {
  $scope.getDataFromService = function() {
    // 调用服务方法并将结果赋给$scope变量
    $scope.data = myService.getData();
  }
});

// Jasmine测试
describe('myController', function() {
  var $scope, myService, createController;

  beforeEach(module('myApp'));

  beforeEach(inject(function($rootScope, $controller, _myService_) {
    $scope = $rootScope.$new();
    myService = _myService_;

    // 创建控制器的辅助函数
    createController = function() {
      return $controller('myController', {
        $scope: $scope,
        myService: myService
      });
    };
  }));

  it('should get data from service', function() {
    // 模拟服务方法调用并返回一个固定的值
    spyOn(myService, 'getData').and.returnValue("Mocked Data");

    // 创建控制器并调用回调函数
    var controller = createController();
    $scope.getDataFromService();

    // 断言$scope变量是否正确赋值
    expect($scope.data).toEqual("Mocked Data");
    expect(myService.getData).toHaveBeenCalled();
  });
});

在测试中,使用spyOn方法模拟myService的getData方法调用,并使用and.returnValue来指定返回的固定值。然后,创建控制器并调用回调函数,最后断言$scope变量是否正确赋值,并且myService的getData方法是否被调用。

相关内容

热门资讯

透视烘培!aa poker辅助... 透视烘培!aa poker辅助,AApoker透视软件总是有工具,八分钟教程(有挂存在)aa pok...
透视总结!wpk辅助哪里买,w... 透视总结!wpk辅助哪里买,wpk控制牌是真的吗(透视)果然有技巧(哔哩哔哩)1、下载好透视辅助下载...
透视策略!德普之星辅助软件,德... 透视策略!德普之星辅助软件,德普之星工具切实存在有插件,第2分钟教程(有挂教学)德普之星辅助软件能透...
一直以来!aapoker透视插... 一直以来!aapoker透视插件,微信小程序微乐破解器2024,揭幕透视(新版有挂)-哔哩哔哩1、首...
透视好友!pokemmo手机脚... 透视好友!pokemmo手机脚本辅助器,微乐贵阳足鸡麻将开挂,科普透视(今日头条)-哔哩哔哩poke...
透视积累!德普之星透视辅助软件... 透视积累!德普之星透视辅助软件下载,德普之星私人局总是是有透视,第3分钟教程(确实有挂)1、玩家可以...
透视手段!wpk辅助哪里买,W... 透视手段!wpk辅助哪里买,WPK有透视一直真的是有工具,7分钟教程(有挂透视)1、玩家可以在wpk...
这一现象值得深思!xpoker... 这一现象值得深思!xpoker辅助器,微乐自建房辅助软件功能,总结脚本(有挂解惑)-哔哩哔哩xpok...
透视绝活!wepoker软件辅... 透视绝活!wepoker软件辅助程序,WePoKer透视果然真的是有工具,8分钟教程(有挂秘诀)1、...
今日!wepoker好友房开挂... 今日!wepoker好友房开挂,微乐春天扑克开挂辅助插件,开挂脚本(有挂存在)-哔哩哔哩1、上手简单...