首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oclif提示测试

Oclif提示测试
EN

Stack Overflow用户
提问于 2019-06-28 03:15:33
回答 1查看 1.2K关注 0票数 7

我正在尝试为一个包含简单提示的Oclif钩子编写一个单元测试。我想测试钩子的输出,给出对提示的'Y‘或'N’响应。

代码语言:javascript
复制
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

我使用的是这里描述的“花式测试”和“@oclif/ test”测试框架:https://oclif.io/docs/testing

我尝试了存根提示符和模拟stdin,但两者都不起作用-要么存根函数不可用,要么输出是空字符串。

下面是一个测试的尝试(因为'cli.prompt不是一个函数‘而不起作用):

代码语言:javascript
复制
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()
})

我突然想到,我可能没有正确地组织我的测试。如果有人能给我指出正确的方向,或者提供一些伪/样本代码,告诉我如何测试上面的钩子,那就太棒了-谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-01 21:46:31

你有没有尝试过:

代码语言:javascript
复制
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')进行存根对我来说很有效

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56797392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档