Насмешка над модулем пользовательского узла с помощью метода jest.mock - PullRequest
0 голосов
/ 06 мая 2019

Итак, я новичок в издевательстве над модулем, используя jest.mock ()

Итак, вот сценарий, я создал модуль узла и загрузил его в личный реестр npm, где я могу найти этот модуль в своем приложении.

Если предположить, что имя модуля @ a / lp-mod , и если это index.js этого модуля:

export const lpr = async () => {
    // some code that does something and returns some data back
}
export default {
   lpr
}

Теперь давайте предположим, что мне нужно смоделировать этот модуль (@ a / lp-mod) и возвращать некоторые статические данные всякий раз, когда функция lpr вызывается в контексте тестового примера.

Итак, вот код, который я написал:

> proj_directory
  |---->__mocks__
  |     |--->@a
  |     |     |--->lp-mod --> this directory has index.js with mock data
  |---->node_modules
  |     |--->@a
  |     |     |--->lp-mod --> this directory has index.js inside /src
  |     |          |---> src
  |     |     |          |---> index.js
  |---->test
  |     |--->1.test.js ---> 

node_modules/@a/lp-mod/src/index.js

// some npm imports like axios
export const lpr = async () => {
  // has some I/O calls, but let's just keep it simple
  return Promise.resolve('I am original call')
}
export default {
  lpr
}

__mocks__/@a/lp-mod/index.js

const p = jest.genMockFromModule('@a/lp-mod')
p.lpr = () => Promise.resolve('This is mocked call')
export default p

1.test.js

// before describe (test case) I wrote this
jest.mock('@a/lp-mod')

Но я получаю undefined , когда файл пытается импортировать оригинальный модуль @ a / lp-mod для использования внутри контекста теста.

Согласно моим ожиданиям, он должен получить проверенный модуль и вернуть оттуда данные только в том случае, если я тестирую свое приложение.

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

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