我是 Jest 的新手。我已经设法模拟了自己的东西,但似乎被困在模拟模块中。特别是构造函数。
用法.js
const AWS = require("aws-sdk")
cw = new AWS.CloudWatch({apiVersion: "2010-08-01"})
...
function myMetrics(params) {
cw.putMetricData(params, function(err, data){})
}
我想在测试中做这样的事情。
const AWS = jest.mock("aws-sdk")
class FakeMetrics {
constructor() {}
putMetricData(foo,callback) {
callback(null, "yay!")
}
}
AWS.CloudWatch = jest.fn( (props) => new FakeMetrics())
然而,当我在 usage.js
中使用它时—cw是 mockConstructor
而不是 FakeMetrics
我意识到我的方法可能“不够惯用”,因此我将不胜感激任何指点。
这是一个最小的例子 https://github.com/ollyjshaw/jest_constructor_so
npm install -g jest
jest
原文由 Oliver Shaw 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题是如何模拟模块。正如 参考资料 所述,
AWS
不是模块对象而是jest
对象,并且分配AWS.CloudFormation
不会有任何影响。此外,它在一个地方是
CloudWatch
CloudFormation
。测试框架不需要重新发明模拟函数,它们已经存在了。它应该是这样的:
并断言: