0

我有一个使用 AngularAMD 和 require.js 的 Angular 应用程序。我想模拟这样的服务:

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 injection() 时,我得到了模拟,但其他应用程序组件不起作用。

我如何告诉 angularAMD 使用模拟而不是真正的实现?

4

1 回答 1

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


        });
    });
});
于 2015-06-24T13:45:47.550 回答