Ich versuche, Methoden in einem importierten Modul zu testen, während ich ein separates Modul teste. Ich bin in der Lage, das importierte Modul mit ES2015-Importsyntax erfolgreich zu verspotten, aber der Schein bleibt während des gesamten Tests konsistent und es gibt Fälle, in denen ich den Schein ändern möchte.Zurücksetzen des Werts eines Mocked-Moduls in einem Jest-Komponententest
Aussehen Meine Dateien wie diese
// 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
});
});
ich essentailly brauchen Mocks für ModuleB
zu trennen. In der Vergangenheit konnte ich einfach var ModuleB = require('ModuleB');
anstelle von import
verwenden und dann bei Bedarf ModuleB.someMethodName = jest.fn()
anrufen. Ich möchte jedoch nur ES2015 für diese Tests verwenden, und das Verwenden des Musters, das ich gerade erwähnt habe, gibt mir einen ModuleB is read-only
Fehler.