Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用sinon模拟AWS S3 getObject_Javascript_Amazon Web Services_Unit Testing_Amazon S3_Sinon - Fatal编程技术网

Javascript 如何使用sinon模拟AWS S3 getObject

Javascript 如何使用sinon模拟AWS S3 getObject,javascript,amazon-web-services,unit-testing,amazon-s3,sinon,Javascript,Amazon Web Services,Unit Testing,Amazon S3,Sinon,我试图对一个restify路由进行单元测试,该路由从一个bucket返回一个S3对象 我的路线是: module.exports=函数(服务器){ server.get('/configs/:version',(req,res,next)=>{ const s3=新的AWS.s3(); 常量参数={ Bucket:'testBucket', 键:“testKey” }; 函数发送(数据,下一步){ res.setHeader('Content-Type','text/plain'); res.

我试图对一个restify路由进行单元测试,该路由从一个bucket返回一个S3对象

我的路线是:

module.exports=函数(服务器){
server.get('/configs/:version',(req,res,next)=>{
const s3=新的AWS.s3();
常量参数={
Bucket:'testBucket',
键:“testKey”
};
函数发送(数据,下一步){
res.setHeader('Content-Type','text/plain');
res.setHeader('Cache-Control','no-Cache');
物质状态(200);
res.send(data.Body);
next();
}
s3.getObject(参数,(err,data)=>(err)?next(err):发送(data,next));
});

};最终使我的模拟工作正常,问题是我将AWS模拟为一个没有对象的函数,需要模拟为函数的是S3,因为需要实例化的是S3。模拟应该是这样的:

function S3() { 
  return s3;
}

s3 = {
  getObject: sinon.stub(),
  putObject: sinon.stub()
};

AWS = {
  config: {
    update: sinon.stub()
  },
  S3: S3
};
比如,如果需要模拟putObject,他只需要这样做:
s3.putObject.callsArgWith(1,err,data)

我已经试过上面的代码,但它不起作用。你能提供一个简单的例子吗?是的,这个代码不起作用。我将更正答案。TypeError:AWS.S3不是一个构造函数或成员,您不需要在测试中实例化它,它已经在代码中实例化了,事实上您想要模拟同一实例的方法。但无论如何,这段代码并没有反映我的最终解决方案,我会修复它。。。