テスト中の Angular モジュールの構成フェーズでメソッドが呼び出されることを確認する仕様を書いています。
テスト対象のコードを簡単に見てみましょう。
angular.module('core',['services.configAction'])
.config(function(configAction){
configAction.deferIntercept(true);
});
core
上記では、単一の依存関係を持つモジュールを定義しています。
次に、モジュールのconfig
-block で、from を使用するように指定されたオブジェクトのメソッドcore
を呼び出します。deferIntercept
configAction
services.configAction
core
config がそのメソッドを呼び出すことをテストしようとしています。
これが現在のセットアップです。
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
ため、スパイが呼び出されないことです。元のメソッドはそうです。モジュール
の依存関係としてそれを削除すると、そうするので、代わりに動作し、スパイが呼び出されます。core
angular.module('core',[])
angular.module('core',['services.configAction'])
services.configAction
依存関係リストから削除せずにテスト中にオーバーライドする方法はありますか?