Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何测试查询器验证_Javascript_Node.js_Inquirer - Fatal编程技术网

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,并依靠第三方库来完成它的工作。由模块生成的控制标准输出的测试看起来像一个组件测试,而不是单元。是的,它是一个集成/组件测试。嘿,谢谢你的回答,我总是视情况而定。我想总的来说是这样的。纯函数的单元测试总是一个好的开始,因为它们快速而稳定。所以你可以测试所有类型的案例。组件测试需要更多的维护工作,所以我更喜欢将它们仅用于关键路径。