Шутка издеваться над детской зависимостью - PullRequest
0 голосов
/ 11 мая 2018

У меня есть файл конфигурации, который импортируется в файл, который я буду тестировать, и мне нужна возможность смоделировать файл конфигурации, но я, кажется, что-то делаю не так - у меня есть приложение

.js

import config from './config';
export default class App{
   static get(){
      //refers to config
   }
}

тестовый файл

import App from './app';  
it('should do something', () => {
   jest.mock(./config, () => {
      return {
         //mocked config
      }
   })
})

, но при запуске теста я получаю реальную конфигурацию, а не проверенную.Есть идеи?

1 Ответ

0 голосов
/ 11 мая 2018

Просто переместите макетную строку после ввода.

import App from './app';  
jest.mock(./config, () => {
      return {
         //mocked config
      }
})
it('should do something', () => {

})

Проблема в том, что сначала вы импортируете App, а затем макет config, но как в модели Jest работает насмешка, она заменяетсмоделированный модуль с вашим макетом, так что если вы импортируете что-то перед тем, как имитировать, его зависимости закончатся импортом оригинальной версии, а не макета.

Вы можете спросить, почему это работает в моем примере, даже если макет не был объявлен перед импортом.По этой причине Jest во время компиляции поднимает все вызовы mock поверх своего блока контекста.

...