【问题标题】:How to accept user input during a mocha test (NodeJs)如何在 mocha 测试期间接受用户输入(NodeJs)
【发布时间】:2020-02-01 00:04:07
【问题描述】:

我正在使用 mocha 和 chai 来测试我项目中的所有 REST-API。
问题是,对于用户注册,我会在用户的电子邮件 ID 上发送一个激活码。
因此,要测试“激活 API 调用”,我需要在控制台中手动输入激活码。
但这会使测试超时。

我的临时解决方案:

describe('User API calls', function () {
    this.timeout(30000);

    it('should should successfully activate user', done => { //Needs user intervention
        console.log('You have less than 30 seconds to enter!');
        const activationCode = readlineSync.question('What is the activation code? ');
        chai.request(configs.url)
            .get('/user/activation')
            .query({'code': activationCode})
            .end((err, res) => {
                expect(res.body).to.haveOwnProperty('success');
                done();
            });
    });
}

这有一个明显的限制,如果我在控制台上输入激活码需要超过 30 秒,测试会因为超时而失败。

有人可以提出解决方案或更好的解决方法吗?

【问题讨论】:

  • 您可以阅读有关模拟 (sinonjs.org/releases/latest/mocks) 的信息。在单元测试用例中输入代码绝对不是一个好主意。
  • @AshishModi 感谢您的评论。但是,在我的情况下,模拟不是一种选择,因为我的测试用例只是试图测试 API。我无权访问内部的实际代码或逻辑。另外,我知道接受用户输入不是一个好习惯,但我认为我在这里没有其他选择。

标签: javascript node.js mocha.js chai


【解决方案1】:

我将尝试使用有关您的 API 的有限信息来回答这个问题。如果您也包括注册电话,这个测试会不会更有意义?您等待注册请求,并将该响应用于“/user/activation”请求。

【讨论】:

  • 感谢您的回复!在我的情况下它不起作用,因为注册请求的响应不包含“安全码”。它仅发送到电子邮件 ID。
猜你喜欢
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多