1
使用another answer概括我的技術是能夠寫一個測試爲--help
開關:捕獲輸出和錯誤測試的Node.js CLI
const expect = require('chai').expect
const exec = require('child_process').exec
const cli = './cli.js'
describe('help', function() {
var capturedStdout
var capturedStderr
// http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html
// var cmd = cli + " --help 1>&2"
var cmd = cli + ' --help'
before(function (done) {
exec(cmd, function (error, stdout, stderr) {
if (error) done(error)
capturedStdout = stdout
capturedStderr = stderr
done()
})
})
it('should succeed',() => {
expect(capturedStderr).be.empty
})
it('should have some usage instructions',() => {
expect(capturedStdout).to.match(/Usage: words \[options] \[pattern]/)
})
it('should show a sematic version number',() => {
// http://rubular.com/r/lTC1wu95jq
expect(capturedStdout).to.match(/v\d+\.\d+\.\d+/)
})
it('should have some examples',() => {
expect(capturedStdout).to.match(/Examples:/)
})
})
有我有兩個問題:
- 一個開關的長度爲45行。
- 如果我添加另一
describe
塊用於不同的開關,例如--version
,然後我得到以下錯誤:Error: done() called multiple times
的解決方案是在測試移動到另一個文件。
有沒有更好的方法來做我想要的?我想要做的就是在測試stdout,stderr和退出狀態時反覆運行我的可執行文件。