我一直试图了解如何搜索各种论坛,但是无法找到我想要的东西。部分是由于我对NodeJS的无知。我才刚开始。
我的任务是通过Jest / Mocha对基于查询者的CLI进行单元测试。我该如何模拟和测试。
我的cli.js看起来像这样-
var inquirer = require('inquirer');
var question = {
name: 'name',
message: 'Enter your name : '
};
inquirer
.prompt([question])
.then (function(response) {
console.log(JSON.stringify(response))
}
);
如果我只是要确保用户传递的值不能超过10个字符,那么我该如何编写测试。
有人可以指出我通过Jest进行的单元测试代码是什么(当然使用任何模拟包)。
预先感谢您的帮助!
答案 0 :(得分:0)
Cli.js
const inquirer = require('inquirer');
const validateNameResponse = response => response.length <= 10;
const handleAnswers = answers = {
// whatever you want to do with answers
};
const question = {
type: 'input',
name: 'name',
message: 'Enter your name : ',
validate: validateNameResponse
};
inquirer
.prompt([question])
.then (handleAnswers);
module.exports = {
validateNameResponse,
};
Cli.unit.test.js (Cli.unit.test是同一目录中的同级文件)
const {
validateNameResponse,
} = require('./cli');
describe('cli', () => {
for(let i =0; i <= 10; i++;) {
it(`should have function validateNameResponse pass inputted name that is ${i} characters long`, () => {
const name='a'.repeat(i);
expect(validateNameResponse(name)).toBe(true)
});
}
it('should have function validateNameResponse fail inputted name that is more than 10 characters', () => {
const name = 'a'.repeat(11);
expect(validateNameResponse(name)).toBe(false);
});
});