4

テスト中の Angular モジュールの構成フェーズでメソッドが呼び出されることを確認する仕様を書いています。

テスト対象のコードを簡単に見てみましょう。

angular.module('core',['services.configAction'])
    .config(function(configAction){
        configAction.deferIntercept(true);
    });

core上記では、単一の依存関係を持つモジュールを定義しています。
次に、モジュールのconfig-block で、from を使用するように指定されたオブジェクトのメソッドcoreを呼び出します。deferInterceptconfigActionservices.configAction

coreconfig がそのメソッドを呼び出すことをテストしようとしています。

これが現在のセットアップです。

describe('core',function()
{
    const configActionProvider={
        deferIntercept:jasmine.createSpy('deferIntercept'),
        $get:function(){
            return {/*...*/}
        }
    };

    beforeEach(function()
    {
        module(function($provide)
        {
            $provide.provider('configAction',configActionProvider);
        });

        module('core.AppInitializer');

        inject(function($injector)
        {
            //...
        });
    });

    it('should call deferIntercept',function()
    {
        expect(configActionProvider.deferIntercept).toHaveBeenCalledWith(true);
    });
});

それに関する問題は、オーバーライドしないconfigActionため、スパイが呼び出されないことです。元のメソッドはそうです。モジュール
の依存関係としてそれを削除すると、そうするので、代わりに動作し、スパイが呼び出されます。coreangular.module('core',[])angular.module('core',['services.configAction'])

services.configAction依存関係リストから削除せずにテスト中にオーバーライドする方法はありますか?

4

1 に答える 1