ユーザからの入力を受け付けるCUIのようなコードのテストサンプル。
テスト対象コード
prompt.js
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
module.exports = function prompt(question) {
return new Promise((resolve, reject) => {
rl.question(question, answer => {
rl.close();
resolve(answer);
});
})
};
使う側はこんな感じ。
main.js
const prompt = require('./prompt');
prompt('Enter something: ').then(answer => {
console.log(answer);
});
実行結果
% node ./main.js
Enter something: abc
abc
テストコード
spec/prompt-spec.js
const prompt = require('../prompt');
describe('prompt function', () => {
it('returns answer', done => {
prompt('question: ').then(answer => {
expect(answer).toEqual('abc');
done();
});
process.stdin.emit('data', 'abc\n');
});
});