英文:
Should I mock module?
问题
我正在使用Jest为一段代码编写测试。我正在测试一个名为Inquirer的模块,这是一个与用户交互的CLI工具,在这种情况下主要用于存储用户输入的值(项目是一个文本冒险游戏)。
有人能解释一下我是否需要以jest.mock()
来模拟这个库,或者为什么我应该这样做吗?这不会影响测试的结果,甚至不会影响测试的完成时间。
const inquirer = require('inquirer');
jest.mock('inquirer');
test('user input with bob', async () => {
expect.assertions(1);
inquirer.prompt = jest.fn().mockResolvedValue({ userInput: 'bob' });
await expect(name()).resolves.toEqual('bob');
})
英文:
I'm writing tests for a piece of code using Jest. I'm testing a module called Inquirer, a CLI tool to interact with the user and mainly in this case to store values from the user (project is a text based adventure game).
Could anyone explain to me if I need to or why I should mock the library itself with jest.mock()
? It does not affect the test's outcome or even the time taken to complete the tests.
const inquirer = require('inquirer')
jest.mock('inquirer')
test('user input with bob', async () => {
expect.assertions(1)
inquirer.prompt = jest.fn().mockResolvedValue({ userInput: 'bob' })
await expect(name()).resolves.toEqual('bob')
})
答案1
得分: 1
当你执行 jest.mock('inquirer')
时,jest 会模拟 inquirer 的所有方法。
所以现在 inquirer.prompt
已经是一个模拟函数了。
因此,你不需要再为它分配另一个模拟函数。在测试中,你可以这样做:
inquirer.prompt.mockResolvedValue({ userInput: 'bob' });
英文:
When you do jest.mock('inquirer')
, jest will mock all the methods of inquirer.
So now inquirer.prompt
is already a mock function.
So, you don't need to assign another mock function to it. Within the test, you can do something like this:
inquirer.prompt.mockResolvedValue({ userInput: 'bob' });
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论