如何处理以下 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 实例添加为参数,那么您可以提供模拟,并使用它们来验证内部实现。
有人要求我测试以下代码,但我对此一无所知。
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 实例添加为参数,那么您可以提供模拟,并使用它们来验证内部实现。