構成で、モックする必要があるプロバイダーを使用するモジュールがあります。
プロバイダー自体にはregister
、2 つの引数を受け取る$get
関数とオブジェクトを返す関数がありますが、とにかくそれをモックするので、それはあまり重要ではありません (と思います)。念のため、プロバイダー全体を以下に示します
モジュールは次のようにプロバイダーを使用します。
angular.module('replenishment').config(configureReplenishmentColumnDef);
configureReplenishmentColumnDef.$inject = ['columnDefProvider'];
function configureReplenishmentColumnDef(columnDefProvider) {
let config = {
matchWhen: ((schema)=> _.get(schema, 'format') === 'replenishment'),
$get: replenishmentColDef
};
columnDefProvider.register(config);
}
replenishmentColDef.$inject = ['$q', 'schema', 'medData'];
function replenishmentColDef($q, schema, medData) {
....
}
このような仕様をまとめ始めました(CoffeeScript で記述されたテスト)
describe 'replenishment-module', ->
columnDefProvider = undefined
beforeEach ->
module ($provide)->
$provide.provider 'columnDef', ->
@.register = sinon.spy()
@.$get = sinon.spy()
return // had to put an explicit return here, as @DTing suggested
module 'replenishment'
inject ->
プロバイダーのメソッドを適切にモックする方法がわかりません。スパイの代わりにスタブを使用する必要があるかもしれません。