我有用 koa 构建的 JSON API,我试图用集成测试来覆盖它。
一个简单的测试如下所示:
describe("GET: /users", function() {
it ("should respond", function (done) {
request(server)
.get('/api/users')
.expect(200, done);
});
});
现在问题来了,当控制器背后的操作 - 比如说 POST /users 处的 saveUser - 使用外部资源时。例如,我需要验证用户的电话号码。
我的控制器如下所示:
save: async function(ctx, next) {
const userFromRequest = await parse(ctx);
try {
// validate data
await ctx.repo.validate(userFromRequest);
// validate mobile code
await ctx.repo.validateSMSCode(
userFromRequest.mobile_number_verification_token,
userFromRequest.mobile_number.prefix + userFromRequest.mobile_number.number
);
const user = await ctx.repo.create(userFromRequest);
return ctx.data(201, { user });
} catch (e) {
return ctx.error(422, e.message, e.meta);
}
}
我希望能够模拟ctx.repo
请求对象,但我似乎无法从测试中获得它,这意味着我的测试实际上是在使用电话号码验证服务。
有什么方法可以绕过该验证服务吗?