Javascript 如何测试查询器验证
我已经在网上看到了问题和答案 我想测试我的验证是否正确。例如,如果我有:Javascript 如何测试查询器验证,javascript,node.js,inquirer,Javascript,Node.js,Inquirer,我已经在网上看到了问题和答案 我想测试我的验证是否正确。例如,如果我有: const answer = await inquirer.prompt({ name: 'answer', message: 'are you sure?' type: 'input', validate: async (input) => { if (input !== 'y' || input !== 'n') { return 'Incorrect asn
const answer = await inquirer.prompt({
name: 'answer',
message: 'are you sure?'
type: 'input',
validate: async (input) => {
if (input !== 'y' || input !== 'n') {
return 'Incorrect asnwer';
}
return true;
}
});
我想运行一个可以运行的单元测试,并验证如果我提供了
blah
,验证将正确验证。我怎样才能为此编写一个测试呢?我会将验证转移到单独的函数中,并单独测试它。测试和代码看起来都更清晰:
const confirmAnswerValidator = async (input) => {
if (input !== 'y' || input !== 'n') {
return 'Incorrect asnwer';
}
return true;
};
const answer = await inquirer.prompt({
name: 'answer',
message: 'are you sure?'
type: 'input',
validate: confirmAnswerValidator
});
然后在测试中
describe('Confirm answer validator', () => {
it('Raises an error on "blah"', async () => {
const result = await confirmAnswerValidator('blah');
expect(result).toBe('Incorrect asnwer');
});
});
这是一个很好的验证函数单元测试。唯一的缺点是它与
inquirer
有关。如果我们用任何cli提示解决方案替换inquirer
,测试将失败。我建议创建一个测试,验证是否通过stdout提示了“错误答案”
。这将断言用户看到的内容。我还没有找到一种方法来实现这一点。它不是绑定的,它只是测试验证功能,仅此而已。因此,我们正在测试我们的func,并依靠第三方库来完成它的工作。由模块生成的控制标准输出的测试看起来像一个组件测试,而不是单元。是的,它是一个集成/组件测试。嘿,谢谢你的回答,我总是视情况而定。我想总的来说是这样的。纯函数的单元测试总是一个好的开始,因为它们快速而稳定。所以你可以测试所有类型的案例。组件测试需要更多的维护工作,所以我更喜欢将它们仅用于关键路径。