我正在NodeJS中构建一个命令行应用程序,我想使用Jasmine对其进行彻底的测试。
我已经实现了一个promptUser()使用Node readline.createInterface方法提出问题并将响应传递到回调中的方法。我想测试一下,给定用户响应“ q”,quit()是否调用了我模块的功能。
但是,我正在努力测试。我真的不想readline直接测试该方法,因为我没有编写该代码,但是我认为,如果可以在其上创建一个侦听器,process.stdout.write那么当它enter command:被打印到屏幕上时,我就可以响应process.stdin.write("q\n")并触发if / else逻辑。
我简化了代码,但是应该解释一下我要做什么:
模块源代码:
var Cli = function() {
var rl = require('readline');
var self = this;
Cli.prototype.promptUser = function() {
var inputHandler = rl.createInterface(process.stdin, process.stdout);
inputHandler.question('enter command: ', function(answer) {
if (answer === 'q') {
self.quit();
};
});
};
Cli.prototype.quit = function() {
// doSomething
};
};
module.exports = Cli;
Run Code Online (Sandbox Code Playgroud)
茉莉花测试:
var Cli = require('Cli');
describe('My application.', function() { …Run Code Online (Sandbox Code Playgroud)