В Jest, как мне издеваться только над внешним модулем в конкретном тесте? - PullRequest
0 голосов
/ 04 июня 2019

Я использую 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 показывает, что я использую макет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...