Выполнить ложный аргумент обратного вызова - PullRequest
0 голосов
/ 07 мая 2018

Мне нужно выполнить аргумент, который является обратным вызовом шутки.

В документации jest их пример обратного вызова касается тестирования первого обратного вызова. У меня есть поведение внутри вложенных обратных вызовов, которые мне нужно проверить. В примерах обещаний они используют resolves и rejects. Есть ли что-нибудь подобное для вложенных обратных вызовов? В настоящее время я выполняю аргумент смоделированного вызова, но я не уверен, что это рекомендуемый способ.

Тестируемая система:

function execute() {
  globals.request.post({}, (err, body) => {
    // other testable behaviors here.
    globals.doSomething(body);
    // more testable behaviors here. that may include more calls to request.post()
  });
}

Тест:

globals.request.post = jest.fn();
globals.doSomething = jest.fn();

execute();

// Is this the right way to execute the argument?
globals.request.post.mock.calls[0][1](null, bodyToAssertAgainst);

expect(globals.doSomething.mock.calls[0][1]).toBe(bodyToAssertAgainst);

Мой вопрос в комментариях к коду выше. Это рекомендуемый способ выполнения обратного вызова, который является аргументом проверяемой функции?

1 Ответ

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

Поскольку вы не заботитесь о реализации метода globals.request.post, вам нужно немного расширить макет, чтобы ваш тест работал.

const bodyToAssertAgainst = {};
globals.request.post = jest.fn().mockImplementation((obj, cb) => {
    cb(null, bodyToAssertAgainst);
});

Тогда вы можете ожидать, что doSomething был вызван с bodyToAssertAgainst. Кроме того, таким образом вы можете легко проверить, будет ли ваш post выдавать ошибку.

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