1
我在使用mochaJS編寫單元測試代碼時遇到了一些問題。這是我的代碼:如何在NodeJS中嘲笑單元測試中的用戶輸入?
//index.js
var query = require('cli-interact');// helper tools for interacting synchronously with user at command line.
module.exports = function main() {
while (true){
let choice = query.getNumber("plz choice from(1~3):");//waiting for user's input;
}
if(choice === 3){
console.log("you entered 3");
}
//...other code
}
//test_spec.js
var chai = require("chai");
var sinon = require("sinon");
var sinonChai = require("sinon-chai");
var expect = chai.expect;
chai.use(sinonChai);
var main = require("../index.js");
describe("test input ", function(){
sinon.spy(console, 'log');
it("enter 3", function(){
main();
//now the test code block here, I want to automatically input 3,but don't know how.
let result = console.log.calledWith("you entered 3")
expect(result).to.equal(true);
});
});
正如上面的代碼示出了,當運行測試情況下,終端顯示一條線「PLZ從(1〜3)的選擇:」並等待我的輸入,一旦I型3並進入,測試用例會通過。
現在我想讓這個過程自動化,我該怎麼做?
query.getNumber()是從模塊 'CLI-相互作用' 一個API,可以在這裏找到(https://www.npmjs.com/package/cli-interact),它可以同步接受用戶的輸入。 –
爲什麼你想要在無限循環內(while(true))?它不會退出循環,並不斷要求用戶輸入 –
事實是,有更多的選擇,其中一個要求用戶添加學生的成績到數據庫,我假設將有多個學生,用戶輸入一個學生的成績,它會回到主要功能並詢問用戶是否想要添加更多成績或退出課程(選擇3)。 –