У меня возникли проблемы с издевательством функции с модуля сторонних узлов в приложении Redux.Мозаичный модуль узла в промежуточном программном обеспечении Redux (Jest)
Я пытаюсь проверить функцию промежуточного программного обеспечения, которая перехватывает определенное действие и вызывает функцию из стороннего пакета npm. (Модуль АМС-ВГД-устройство SDK, а функция устанавливает соединение WebSocket к службе AWS IoT)
import awsIot from 'aws-iot-device-sdk'
// ...
const customMW = (store => {
let websocket = null
return next => action => {
switch(action.type) {
case 'CONNECT':
websocket = awsIot.device({
accessKeyId: action.accessKey
// other params...
})
// Listen to events etc.
break
// ...
}
}
})
awsIot.device()
устанавливает соединение WebSocket, и она отлично работает.
Однако, когда я пытаюсь проверить функцию customMW
, awsIot.device()
называется, даже если я пытаюсь дразнить его (магазин и следующий надлежащим образом издевался):
test.js
describe('middleware test',() => {
it('does something',() => {
awsIot.device = jest.fn()
action = { type: 'CONNECT' }
customMW(store)(next)(action)
// assertions...
})
})
Когда я запустить тест, я получаю ошибка «accessKey» не определена. Таким образом, промежуточное программное обеспечение запускает исходную функцию awsIot.device()
, которая ищет «accessKey» для передачи как часть действия.
Я использовал этот шаблон в другом месте с успехом. Кто-нибудь знает, почему эта функция не издевается?
Я все еще получаю ту же ошибку. Кажется, шутка просто полностью игнорирует мои издевавшиеся функции. –
Не могли бы вы зарегистрировать 'awsIot' в вашем компоненте, чтобы проверить, было ли это издевательство. –
Да, это так странно. На самом деле, если я продлю ваше предложение и добавлю макетную реализацию в '.device', я вижу, что это правильно вернулось в моем исходном файле. Но по какой-то причине следующая строка (которая вызывает ту же самую функцию, кажется, игнорирует это ...) –