我正在使用AWS SDK作为NodeJS。
我有一个模块(moduleFoo
)设置如下:
if (global.GENTLY) { require = GENTLY.hijack(require); }
var aws = require("aws-sdk"),
ec2;
exports.initEC2Client = function () {
ec2 = new aws.EC2();
};
exports.doSomething = function () {
var params;
// params gets populated here...
ec2.Client.describeInstances(params, function (err, data) {
// logic!
}
}
我正在尝试删除describeInstances
方法。
我知道我可以通过以下方式存根EC2
类:
gently.stub("aws-sdk", "EC2");
我可以通过根据Gently docs来构建它的构造函数来创建一个虚假的实例:
var ec2Stub = gently.stub("aws-sdk", "EC2"),
ec2;
gently.expect(ec2Stub, "new", function () {
ec2 = this;
});
moduleFoo.initEC2Client();
此时我卡住了。我需要做的是隐藏属于ec2
的对象的方法。有没有办法使用Gently来解决这个问题?
答案 0 :(得分:0)
我在按下提交之前输入了整个问题后找到了答案。
我通过将Client
初始化为空对象然后在其上截断describeInstances
方法来解决它:
var ec2Stub = gently.stub("aws-sdk", "EC2"),
ec2;
gently.expect(ec2Stub, "new", function () {
ec2 = this;
});
moduleFoo.initEC2Client();
ec2.Client = {};
gently.expect(ec2.Client, "describeInstances", function (params, callback) {
// assert `params` is populated ok
callback();
})
moduleFoo.doSomething();
gently.verify(); // throws no error