【发布时间】: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