別のモジュールをテストしている間に、インポートされたモジュールでメソッドをモックアウトしようとしています。インポートされたモジュールをES2015インポート構文でうまく模倣することができましたが、モックはテスト全体を通して一貫していて、モックを変更したい場合があります。Jestユニットテストで模擬モジュールの値をリセットする
私のファイルは、私がessentailly ModuleB
のためのモックを分離する必要があり、この
// ModuleA
import ModuleB from 'ModuleB'
// ... code
// TestCase
import ModuleA from 'ModuleA'
import ModuleB from 'ModuleB'
jest.mock('ModuleB',() => {
return {
value: true
}
}
describe('ModuleA',() => {
it('returns true',() => {
// This test expects ModuleB.value to return true
});
it('returns false',() => {
// This doesn't work
ModuleB.value = jest.fn(() => false)
// This doesn't work either
jest.mock('ModuleB',() => {
return {
value: false
}
});
// This test expects ModuleB.value to return false in order to pass
});
});
のように見えます。これまではimport
の代わりにvar ModuleB = require('ModuleB');
を使用してから、必要に応じてModuleB.someMethodName = jest.fn()
に電話することができました。私はこれらのテストにES2015だけを使用したいと思いますが、今述べたパターンを使用するとModuleB is read-only
というエラーが出ます。