簡體   English   中英

如何在AngularAMD應用程序單元測試中模擬服務

[英]How to mock a service in AngularAMD app unit tests

我有一個使用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使用模擬代替實際的實現?

您可以執行以下操作以使用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


        });
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM