我遇到了一个非常复杂的情况,希望你们给我提示。
所以我有一个 main 方法,它是一个 api 端点,该方法调用另一个方法来检查用户是否有权使用该端点。 我称之为 apiAuthorazation 的子端点向第三方 url 发送 get 请求,该第三方返回一个响应,表明该用户是否已被授权!
所以我已经对 main 方法进行了单元测试,但现在我想向其中添加此授权部分。我知道我可以使用像 Nock 这样的垃圾库或其他类似的库,但我的问题是如何将此子方法添加到我的 uit 测试中。
这是我的 api 端点方法:
module.exports.api = (event, context, callback) => {
// Authorization
let getBearertoken = event.headers.Authorization.replace("Bearer ", '');
let isAuhtorized = utilities.apiAuthorazation(getBearertoken);
//Some other Codes
}
正如你所看到的,我将一个不记名 token 传递给了我的子方法,并且 apiAuthorazation 方法将把这个 token 发送到第三方 api,方法如下:
module.exports.apiAuthorazation = function (token){
let url = process.env.authApiUrl
requestLib(`${url}/${token}`, function (error, response, body) {
if (error) console.log('Error while checking token :', error);
if(response.isValidUser){
return true;
}
else{
return false;
}
});
}
现在我的问题是如何将此子方法包含到我的主方法单元测试中。我使用 mocha 和 chai 进行单元测试,因为 berear token 很快就会过期,所以当我运行测试时,我发送了一个包含 beear token 的示例事件,但它已经过期了,所以它有点无用。
最佳答案
当您对 Api 进行单元测试时,您可以模拟两种场景(true 或 false)的 apiAuthorization,并测试 Api 的行为是否符合预期。对于 Api 测试,根本不用担心子方法内部发生的情况,因为您在这里测试 Api,重点不在于子方法 apiAuthorization 内部发生的情况。
关于javascript - 从主方法调用并包含 http 请求授权的子方法的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50828799/