如何处理以下 TypeScript 代码进行测试?

How to approach the following TypeScript code for testing?

有人要求我测试以下代码,但我对此一无所知。

import AWS from 'aws-sdk';
import db from './db';

async function uploadUserInfo(userID: number) {
const user = db.findByPk(userID);
    if(!user) throw new Error('User not Found')
const S3 = new AWS.S3();
await S3.putObject({
    Bucket: 'users',
    Key:userID,
    Body: JSON.stringify(user.get())
})
    
}

据我理解的代码,它是一个异步函数来上传用户信息,验证它,并使用一个AWS的新实例Class将userId放入数据库。

您可能需要通过输入 UserID 的不同值来测试它。由于我假设没有给出代码的其他部分,您只需要使用不同的输入值对其进行测试,并尝试使用错误处理

正如所写,该函数不会 运行 因为它似乎有一个未声明的变量 (order)。所以你可能可以测试它并 return 它作为 'broken'.

给开发人员

它是可测试的,假设您的测试环境知道数据库内容,并且 AWS 凭证是正确的(并且可能不是 live/production 实例)。如果这是真的,那么您可以提供已知的用户 ID 值并检查 AWS 存储桶是否接收到数据。

该函数没有很好地实现,因为它的依赖项(db 和 AWS)是不可注入的,因此它们不能轻易地被模拟实现替换以用于测试目的。

一些测试工具可能允许您拦截模块加载,以便您可以提供模拟数据库和 AWS 实现,这将允许您根据用户 ID 检查相关调用是否使用正确的数据参数.

如果您有能力修改函数以使其更易于测试,那么如果您将数据库和 AWS 实例添加为参数,那么您可以提供模拟,并使用它们来验证内部实现。