Функция пересмешки внутри объекта другого модуля (узел + шут) - PullRequest
0 голосов
/ 14 января 2019

У меня есть два файла в моем проекте:

controller.js

const controller = (request, response, route_name) => {
    parser[route_name](request.query, request.body, (err, data) => {
        ...
    }
};

export default controller;

parser.js

const parser = {
    foo: (query, body, callback) => {
        ...
        return callback(obj, null);
    }
};

export default parser;

Сейчас я пытаюсь проверить свой контроллер. Первый тест - отправить неверно отформатированный запрос и, кроме парсера, вызвать обратный вызов с определенными аргументами. Я не нашел ни метода, ни библиотеки, чтобы изменить поведение функции внутри объекта синтаксического анализатора. Ребята, вы можете помочь?

1 Ответ

0 голосов
/ 14 января 2019

Предполагается, что вы импортируете модуль синтаксического анализа в controller.js, как это

import parser from './parser`

вы можете легко смоделировать модуль в тестовом файле следующим образом:

jest.mock('./parser', () => ({ // note the path is relative to your test file
  foo: () => //your mock implementation here
}))

если вы хотите проверить, что parser.foo был вызван с правильным параметром, вы можете сделать его шпионом и импортировать парсер в ваш тест для проверки правильности вызова:

jest.mock('./parser', () => ({
  foo: jest.fn(() => //your mock implementation here)
}))
import parser from './parser'
import controller from './controller

controller(someRequestMock, someResponseMock, 'foo' )
expect(parser.foo).toHaveBeenCalledWith(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...