Какова сфера применения насмешек в шутке? - PullRequest
0 голосов
/ 31 января 2020

В целом, я хочу знать:

  1. Содержатся ли макеты для проверки файлов или влияют на несколько файлов?
  2. Является ли Jest Scoping такой же, как JavaScript scoping? Макет в самой внутренней области имеет приоритет над внешними / глобальными макетами с тем же именем.
  3. Можно задать следующий вопрос: какие методы шутливого макета применяются к единицам, а какие - к локальной и глобальной областях?

Например, в следующей файловой системе:

rootFolder/
  node_modules/
    externalModule/
      - index.js
  __mocks__/
    - externalModule.js
  src/
    - fileA.js
    - fileB.js
    - internalModule.js
    __mocks__/
      internalModule.js
    __tests__/
      - fileA.spec.js
      - fileB.spec.js

У меня есть следующие вопросы:

  1. Будет jest.mock('../internalModule, () => customImplementation) в файле A. spe c. js влияет на fileB.spe c. js и наоборот?
  2. Аналогично, jest.mock('externalModule', () => customImplementation) в fileA. spe c. js влияет fileB.spe c. js и наоборот ?. Выполнение `jest.mock ('Mocking внешних модулей (node_modules)
  3. Как работают глобальные mocks? Будут ли они автоматически загружаться в файлы или я должен явно сделать jest.mock('externalModule') для его инициализации
  4. Будет ли jest.mock('externalModule', () => customImplementation) иметь приоритет над глобальными макетами? Будет ли он переопределять глобальный макет между файлами?
  5. jest.spyOn(internalModule, 'someFunc').mockImplementationOnce(..) будет издеваться над реализацией в течение всего срока службы модуля или только один вызов someFunc() сбросит функциональность?
  6. В соответствии с документами jest.doMock, в отличие от jest.mock, НЕ будет поднимать макет "вверх". это в конце модуля? Или это повлияет и на будущие модули?
  7. Будет ли jest.unmock('externalModule') для глобальных макетов, сбросить его для каждого файла?

Я видел очень противоречивое поведение и отсутствие документации, явно объясняющей это. Кроме того, я обнаружил, что документация либо повсеместно, либо недостаточно конкретна.

Заранее спасибо.

PS Я нашел o Есть вопросы с похожими названиями, такие как Как ограничить область применения Jest-функций Jest одним тестом и Области применения Jest при JOOK-функциях , но они не отвечают на мой вопрос.

...