【发布时间】:2021-10-16 02:02:31
【问题描述】:
我有这个功能:
export async function checkIfUserExist(user: User): Promise<boolean> {
let result: PromiseResult<QueryOutput, AWSError>;
const params = {
TableName: "Users",
IndexName: "Email-index",
KeyConditionExpression: "Email = :user_email",
ExpressionAttributeValues: {
":user_email": user.Email
}
}
result = await dynamodb.query(params).promise();
if (result.$response.error != null) {
console.log(`Error query: ${result.$response.error}`)
return true;
} else if (result.Count > 0) {
console.log(`User already exist`)
return true;
} else {
return false;
}
}
我正在尝试使用 mocha/chai 和 Sinon 来模拟测试它。我试图返回一个 AWSError 来测试第一个 if 语句。我的测试代码是这样的:
it('With error @ query', async () => {
const errorStub = Sinon.stub(AWS.DynamoDB.DocumentClient.prototype, 'query')
const input: User = {
Email: "pleaseneverregisteruserwiththisemail@gmail.com"
};
const expectedOutput: boolean = false;
const output = await checkIfUserExist(input);
expect(output).to.equal(expectedOutput);
expect(errorStub.calledOnce).true;
Sinon.restore();
})
如何在 errorStub 中返回 AWSError?
【问题讨论】:
-
您能否详细说明如何获得“dynamodb”变量?变量的类型是什么?它在哪里实例化?
-
@stijndepestel 变量在
checkIfUserExist函数所在文件的开头全局实例化 -
我认为存根工作不正常,但在第二次阅读时,我发现它根本不存在。我已经添加了答案。
标签: javascript amazon-web-services unit-testing amazon-dynamodb sinon