#javascript #node.js #ecmascript-6 #jestjs
#javascript #node.js #ecmascript-6 #jestjs
Вопрос:
асинхронный ожидающий шутливый макет http-запроса в node.jest
I can write my test like so
it('works with async/await', async () => {
expect.assertions(1);
const data = await user.getUserName(4);
expect(data).toEqual('Mark');
});
но GetUserName будет выполнен, и он попадет в мой сервер и базу данных, как издеваться над функцией, чтобы мой тест можно было запускать изолированно?
Ответ №1:
Вам нужно на самом деле издеваться над user
объектом. У меня нет полного контекста, но у вас, вероятно, есть что-то вроде const User = require('../user.js')
. Итак, с помощью jest вы можете издеваться над этим, выполнив
jest.mock('../user.js')
jest.mock принимает также обратный вызов, в который вы можете добавить свою собственную реализацию, но я предпочитаю иметь отдельную папку mocks, в которой вы можете сохранить свою собственную реализацию mock, поскольку это может сделать тесты немного более загроможденными.
Вы можете проверить, как она используется здесь, где вы вызываете jest.mock, а затем макет реализации.
Комментарии:
1. действительно? имитировать весь пользовательский объект?
2. Вы можете издеваться только над тем методом, который вам нужен, я нахожу его более чистым, так как позже вы сможете использовать его и для других тестов или иметь более сложную логику.