Scheinfunktioniert in der Testdatei, aber nicht in der getesteten Datei
Posted: 13 Jan 2025, 14:39
Ich versuche, ein Projekt von Jest nach Vitest zu migrieren und habe Probleme mit Mocks. Ich kann nicht herausfinden, warum beim Verspotten eines Moduls eines Drittanbieters und beim Verwenden von Scheinimplementierungen/Mock-Rückgabewerten diese zwar in der Testdatei funktionieren, aber nicht in der getesteten Datei (wo ich möchte, dass die Scheinwerte tatsächlich zurückgegeben werden). Dies funktioniert problemlos mit Jest, jedoch nicht mit Vitest. Hier ist ein Teil des Codes, den ich derzeit habe:
und die getestete Datei:
Wenn console.log innerhalb des Tests ausgeführt wird, gibt der Code die simulierten Werte zurück ( und '123') wie erwartet, aber wenn der Code in der getesteten Datei ausgeführt wird, scheint es, als würden die ursprünglichen Implementierungen ausgeführt, nicht die simulierten, und ich verstehe nicht, warum.
Code: Select all
import internalService from '@internal/js-service'
import idUtil from '@internal/js-service/lib/idUtil'
vi.mock('@internal/js-service', () => {
return {
default: {
init: vi.fn().mockReturnValue('1),
identify: vi.fn(),
},
}
})
vi.mock('@internal/js-service/lib/idUtil', () => ({
default: vi.fn().mockReturnValue('123'),
}))
test('should initialize the internal service with the expected params', () => {
console.log('test', internalService.init(), idUtil())
initializeInternalService({email: 'testEmail@company.com'})
expect(internalService.init).toHaveBeenCalledTimes(1)
expect(internalService.init).toHaveBeenCalledWith(
{
email: 'testEmail@company.com',
unique_id: '1',
},
)
})
Code: Select all
import internalService from '@internal/js-service'
import idUtil from '@internal/js-service/lib/idUtil'
export const initializeInternalService = (user: User) => {
internalService.init(
{
unique_id: idUtil(),
email: user.email,
},
)
}
Code: Select all
'1'