javascript - 从主方法调用并包含 http 请求授权的子方法的单元测试

标签 javascript node.js unit-testing mocking mocha.js

我遇到了一个非常复杂的情况,希望你们给我提示。

所以我有一个 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/

相关文章:

node.js - 捕获 socket.io 服务器关闭错误

visual-studio-2008 - 是否可以在 Visual Studio TestMethod 执行期间显示进度?

javascript - 如何将原型(prototype)函数名称传递给另一个原型(prototype)函数

node.js - 使用 express.js 在响应 header 中设置 token 值

javascript - 如何将接口(interface)从 typescript 转换为 javascript?

javascript - Sublime Text 2 中的 Node.js 构建系统

reactjs - Jest 单元测试 - 如何模拟表行图标的单击事件

java - 如何在 Spring Boot 中为 Controller 编写单元测试

javascript - 关于 iframe 上的 javascript

javascript - 更新我对 Backbone 模型变化的看法