統合テストでカバーしようとしている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
たが、テストからそれを取得できないようです。つまり、テストが実際に電話番号検証サービスにヒットしていることを意味します。
その検証サービスにアクセスする方法はありますか?