【发布时间】:2023-03-25 05:44:01
【问题描述】:
我有一个函数在我试图对其进行测试覆盖的对象内返回。我正在使用原生 JavaScript 和 Jest。
这是我的代码...
function getDataManager() {
const config = conf(env);
const { data } = config;
if (process.env.NODE_ENV === 'test') {
return createStub(data);
}
return new DataManager();
}
function createStub(data) {
const smtpData = {
user: data.smtp.user,
pass: data.smtp.pass,
};
const dataManager = {
// this function is here to mimic the real dataManager
getSecretData(name) {
if (name === 'internalString') {
return smtpData;
}
throw new Error('Unable to retrieve data.');
},
};
return dataManager;
}
我还没有测试覆盖的部分是 dataManager 对象内部的这个函数...
getSecretData(name) {
if (name === 'internalString') {
return smtpData;
}
throw new Error('Unable to retrieve data.');
}
代码确实可以工作......我所有的其他测试仍然通过,这意味着他们得到并使用了存根。当我部署 Postman 时,测试也通过了,这意味着使用了真正的 dataManager。
我发现了一个未解决的问题 (https://github.com/facebook/jest/issues/8709),它似乎与我正在尝试做的事情相似,但我希望有人能够让它工作......或者如果你有建议也请发表评论以不同的方式发送存根。
存在此存根的原因是我没有找到使用本地版本的 AWS Secrets Manager 成功测试的方法。我正在使用 nodejs serverless-offline 来测试其他服务。如果其他人在本地成功使用 SecretsManager,那对我也有帮助。 :)
【问题讨论】:
-
您只提供了截断的 sn-ps,没有提供测试。请不要截断它们。在 Jest 中如何导入和导出模块非常相关。请为您的案例提供stackoverflow.com/help/mcve。
-
谢谢 Estus Flask,我现在可以看到我没有发布明确的问题。我会尝试在以后的问题中包含更好的代码示例。
标签: javascript jestjs aws-secrets-manager