//待测类
var AWS = require('aws-sdk');
var s3Export = function() {
var s3Client = new AWS.S3();
this.getObject => (params) => {
return s3Client.getObject(params).promise();
}
};
module.exports.S3 = new s3Export();
// 测试类
describe('s3-wrapper-tests', function() {
var app, aws, s3, getObjectData = {Bucket: 'test-bucket', Key: 'test-file'}, deleteObjectData,
deleteObjectsDatas, putObject;
before(() => {
s3 = sinon.stub({
getObject: function(params) {
getObjectData = params;
return Promise.resolve( {Body: ['a','b','c']} );
});
aws = sinon.stub(AWS, 'S3');
aws.returns(s3);
app = proxyquire(modulePath, {'aws-sdk': aws } );
});
after(() => {
aws.restore();
});
beforeEach(() => {
s3.getObject.reset();
s3.getObject.callsArgWith(0, getObjectData);
});
it('test message', () => {
return app.S3.getObject(
{Bucket: 'test-bucket', Key: 'test-file'}).then(() => {
const args = s3.getObject.getCall(0).args[0];
expect(args).to.not.be.null;
});
});
});
我的问题是关于Sinon 的callsWithArgs 方法和promise 的aws-sdk。我的问题是,我如何测试这个调用是否使用正确的参数并按预期返回一个承诺。就目前而言,测试失败并出现异常:
TypeError:索引 1 处的参数不是函数:未定义