2017-02-09 11 views
0

код Я работаю с:Предотвращение вызова локальных импортируемых модулей с Jest

// Redux-reducer.js

import { combineReducers, loop, Effects } from 'redux-loop' 

import { loginStart } from './actions' 

import { 
    signUp, 
    login, 
    refreshAccessTokenStart, 
    replayAction, 
    postConfirmationToken, 
    postRequestForPasswordReset, 
    postNewPassword 
} from './effects' 
... 
... 
... 

// Redux-редуктор-test.js

import combinedReducer from './reducers' 

beforeEach(() => { 
    require.requireMock('effects') // something like this 
}) 
... 
... 
... 

Проблема заключается в том, что локальный модуль ./effects вызывает реакцию сценариев конфигурации собственной среды.

Я думал о том, чтобы высмеять модуль ./effects таким образом, чтобы ./effectsне был выполнен..

Вещи, которые еще не работали:

  • с использованием метода require.requireMock('effects')
  • давая ему поругаем автомагически
  • с помощью proxyquire: Я думал proxyquire.noCallThru() бы предотвратить ./effects запускаемых. Кажется, proxyquire несовместим с Jest и что (?) Каким-то образом будет эта функция внутри Jest?

Заинтересованы в том, чтобы услышать ваши мысли и узнать больше о Jest!

ответ

0

Это в документации, здесь: Jest Docs

automock [логический]

По умолчанию: ложные

Эта опция по умолчанию отключена. Если вы представляете Jest крупной организации с существующей базой кода, но мало тестов, включение этой опции может быть полезно для постепенного внедрения модульных тестов. Модули могут быть явно автоматизированы с помощью jest.mock (moduleName).

0

Нет в документации, это работает для меня:

От Jest blog about v15 changes:

Automocking отключен по умолчанию в Jest. Это, безусловно, самая запутанная функция для новых пользователей, и во многих отношениях она не делает смысл для небольших проектов. Мы внедрили automocks на Facebook, и это отлично подойдет для нас, когда модульное тестирование было принято в большой существующей кодовой базе с несколькими существующими тестами, но со временем почувствовали, что люди провели больше времени, сражаясь с издеваемыми/незафиксированными модулями, чем это было бы взяли их, чтобы написать тест в обычном режиме. Мы также заметили, что библиотекам часто требуется огромное количество базовых модулей, которые всегда имеют для ручной разблокировки. Даже для самого Jest мы поняли, что большинство тестов было отключено автоматически. Мы по-прежнему считаем , что явное автопроизводство может быть невероятно ценным. Это изменение просто обрабатывает неявные макеты для явных маков через вызовы jest.mock (moduleName).

Если вы по-прежнему хотите использовать automocking по умолчанию, включите настройку automock в вашей конфигурации или вручную вызовите jest.enableAutomock() в тестовом или установочном файле.

Automocking теперь работает с моей package.json шутку конфигурации, как показано ниже:

"jest": { 
    "preset": "jest-react-native", 
    "testRegex": "\\.test\\.js$", 
    "setupFiles": [ 
     "./setupJest.js" 
    ], 
    "automock": true 
    }, 

КАЖЕТСЯ документы являются неполными, держать глаз на блоге!