Я использую Jest с TypeScript (используя ts-jest
).Это мой тестовый объект, который использует библиотеку dotenv
:
import * as dotenv from 'dotenv';
export class TestSubject {
public function test() {
console.log(dotenv); // Here I debug if I'm using a mock or not
}
}
Я хотел бы высмеивать библиотеку dotenv
только для конкретного теста, но я застрял.
ЗдесьЭто мой набор тестов:
import { TestSubject } from './test-subject';
import * as dotenv from 'dotenv';
jest.mock('dotenv'); // place it here, otherwise it doesn't work
describe('Suite 1', () => {
it('test 1', () => {
// I want to use the mock here... and it works
const subject = new TestSubject();
subject.test(); // shows that I'm using the mock
});
it('test 2', () => {
// I don't want the mock here
jest.dontMock('dotenv'); // doesn't work
jest.unmock('dotenv'); // doesn't work
const subject = new TestSubject();
subject.test(); // shows that I'm still using the mock!!!
});
});
Как видите, вызов jest.mock('dotenv')
следует размещать вне описания, иначе он не будет работать.
Я пытаюсь не использовать макет в тесте 2 , но он не работает: console.log
показывает, что я использую макет.