我有一个使用AngularAMD和require.js的角度应用程序。我想嘲笑像这样的服务:
module(function ($provide) {
$provide.service('ToolsService', function () {
var toolsServiceMock = {
someMethod: function () { }
};
return toolsServiceMock;
});
});
并注入它:
angularAMD.inject(function ($injector) {
toolsService = $injector.get('ToolsService');
});
但$ injector给了我真正的服务,而不是我的模拟。从不调用函数($ provide)。
当我将angularAMD.inject()更改为angular inject()时,我得到了模拟,但其他应用程序组件不起作用。
如何告诉angularAMD使用模拟代替实际实现?
答案 0 :(得分:0)
您可以执行以下操作以使用angularAMD测试服务。
define(['app','angularAMD'],function(app,angularAMD){
'use-strict';
describe('ToolsService',function(){
// load the controller's module
beforeEach(angular.mock.module('appModule'));
var moduleToInject;
// Initialize the controller and a mock scope
beforeEach(function(){
angularAMD.inject(function ('ToolsService') {
});
});
it('should check all methods', function() {
//code to test
});
});
});