首页 > 解决方案 > 如何测试查询器验证

问题描述

我已经看过关于如何为 Inquirer.js 编写单元测试的问题和答案?

我想测试我的验证是否正确。例如,如果我有:

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,验证将正确验证。我该如何为此编写测试?

标签: javascriptnode.jsinquirer

解决方案


我会将验证移至单独的功能,并单独测试它。测试和代码看起来都会更清晰:

 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');
 });
});

推荐阅读