Oclif 提示测试
Oclif prompt testing
我正在尝试为包含简单提示的 Oclif 挂钩编写单元测试。我想测试挂钩的输出,给出 'Y' 或 'N' 对提示的响应。
import {Hook} from '@oclif/config'
import cli from 'cli-ux'
const hook: Hook<'init'> = async function () {
const answer = await cli.prompt("Y or N?")
if(answer === 'Y') {
this.log('yes')
}
else {
this.log('no')
}
}
export default hook
我正在使用此处描述的 'fancy-test' 和 '@oclif/test' 测试框架:
https://oclif.io/docs/testing
我已尝试对提示进行存根和模拟标准输入,但都没有用 - 存根函数不可用或输出为空字符串。
这是一项测试的尝试(因为 'cli.prompt is not a function' 而无效):
import {expect, test} from '@oclif/test'
import cli from 'cli-ux'
import * as sinon from 'sinon';
describe('it should test the "configure telemetry" hook', () => {
test
.stub(cli, 'prompt', sinon.stub().resolves('Y'))
.stdout()
.hook('init')
.do(output => expect(output.stdout).to.contain('yes'))
.it()
})
我突然想到我可能没有正确地构建我的测试。如果有人能给我指出正确的方向或提供一些伪代码/示例代码来说明如何测试上述钩子,那将是非常棒的 - 谢谢!
你试过吗:
import {expect, test} from '@oclif/test'
import cli from 'cli-ux'
import * as sinon from 'sinon';
describe('it should test the "configure telemetry" hook', () => {
test
.stub(cli, 'prompt', () => async () => 'Y')
.stdout()
.hook('init')
.do(output => expect(output.stdout).to.contain('yes'))
.it()
})
用 .stub(cli, 'prompt', () => async () => 'Y')
存根对我有用
我正在尝试为包含简单提示的 Oclif 挂钩编写单元测试。我想测试挂钩的输出,给出 'Y' 或 'N' 对提示的响应。
import {Hook} from '@oclif/config'
import cli from 'cli-ux'
const hook: Hook<'init'> = async function () {
const answer = await cli.prompt("Y or N?")
if(answer === 'Y') {
this.log('yes')
}
else {
this.log('no')
}
}
export default hook
我正在使用此处描述的 'fancy-test' 和 '@oclif/test' 测试框架: https://oclif.io/docs/testing
我已尝试对提示进行存根和模拟标准输入,但都没有用 - 存根函数不可用或输出为空字符串。
这是一项测试的尝试(因为 'cli.prompt is not a function' 而无效):
import {expect, test} from '@oclif/test'
import cli from 'cli-ux'
import * as sinon from 'sinon';
describe('it should test the "configure telemetry" hook', () => {
test
.stub(cli, 'prompt', sinon.stub().resolves('Y'))
.stdout()
.hook('init')
.do(output => expect(output.stdout).to.contain('yes'))
.it()
})
我突然想到我可能没有正确地构建我的测试。如果有人能给我指出正确的方向或提供一些伪代码/示例代码来说明如何测试上述钩子,那将是非常棒的 - 谢谢!
你试过吗:
import {expect, test} from '@oclif/test'
import cli from 'cli-ux'
import * as sinon from 'sinon';
describe('it should test the "configure telemetry" hook', () => {
test
.stub(cli, 'prompt', () => async () => 'Y')
.stdout()
.hook('init')
.do(output => expect(output.stdout).to.contain('yes'))
.it()
})
用 .stub(cli, 'prompt', () => async () => 'Y')
存根对我有用