【发布时间】:2015-09-23 08:05:12
【问题描述】:
通常我使用这个代码:
aws_stub.S3 = function(){};
var fake_aws_listObjects = function(params, func){func("failure", null)};
var fake_aws_listObjects_stub = sinon.spy(fake_aws_listObjects);
aws_stub.S3.prototype.listObjects = fake_aws_listObjects_stub;
要存根类似以下的函数:
new AWS.S3().listObjects(that.build_params(), function(err, data) {
if(err){
that.make_failure_callback();
}
else{
that.add_keys(data);
if(data.IsTruncated){
that.make_request(data.NextMarker);
}else{
that.make_success_callback(that.keys);
}
}
});
这个存根的问题在于每个请求它返回相同的
现在我想做的是为每个调用设置不同的存根:
aws_stub.S3 = function(){};
var fake_aws_truncated = function(params, func){func(null, {
Contents: [{Key: "3fb252ba-0724-438c-93b6-8cd0fd972a8e/image/1:::2.jpg"}],
IsTruncated: true,
NextMarker: "nextMarker"
})};
var fake_aws_listObjects = function(params, func){func(null, {Contents: [{
Key: "3fb252ba-0724-438c-93b6-8cd0fd972a8e/image/2:::3.jpg"
}]})};
var fake_aws_listObjects_stub = sinon.stub();
fake_aws_listObjects_stub.onCall(0).returns(fake_aws_truncated);
fake_aws_listObjects_stub.onCall(1).returns(fake_aws_listObjects);
aws_stub.S3.prototype.listObjects = fake_aws_listObjects_stub;
问题好像是returns,它没有执行函数!!
我也不能这样写:
fake_aws_listObjects_stub.onCall(0) = fake_aws_truncated;
因为这将是错误的分配!
我需要改变什么?以下是 sinon 文档:http://sinonjs.org/docs/
谢谢!!
【问题讨论】:
-
这是一个非常混乱的代码,可以尝试使用。在发布之前,简单地对其基本部分进行编码,删除任何上下文通常是有意义的。比如,Amazon S3 与这个问题有什么关系?没有。与您的实际问题相比,问题标题具有误导性。
标签: javascript sinon stubbing