-
-
Save joerx/9ef0cb5b2c4252f3d5ff to your computer and use it in GitHub Desktop.
var Aws = require('aws-sdk'); | |
var sinon = require('sinon'); | |
// Only works for 'createBucket', 'update' and a few others since most API methods are generated dynamically | |
// upon instantiation. Very counterintuitive, thanks Amazon! | |
var createBucket = sinon.stub(Aws.S3.prototype, 'createBucket'); | |
createBucket.yields(null, 'Me create bucket'); | |
// For other methods, we can 'assign' the stubs to the proto, already defined function won't be overridden | |
var listBuckets = Aws.S3.prototype.listBuckets = sinon.stub(); | |
listBuckets.yields(null, 'Me list buckets'); | |
var s3 = new Aws.S3(); | |
s3.createBucket({Bucket: 'my-bucket'}, function(err, arg1) { | |
console.log(arg1); | |
}); | |
s3.listBuckets(function(err, arg1) { | |
console.log(arg1); | |
}); | |
console.log('Called #createBucket() ' + s3.createBucket.callCount + ' time(s)'); | |
console.log('Called #listBuckets() ' + s3.listBuckets.callCount + ' time(s)'); |
{ | |
"name": "node-s3-stub", | |
"version": "0.0.0", | |
"description": "", | |
"main": "index.js", | |
"scripts": { | |
"test": "echo \"Error: no test specified\" && exit 1" | |
}, | |
"author": "", | |
"license": "BSD", | |
"dependencies": { | |
"sinon": "~1.14.1", | |
"aws-sdk": "~2.1.17" | |
} | |
} |
For putObject
:
const putObjectStub = AWS.S3.prototype.putObject = sinon.stub();
putObjectStub.yields(null, 'data');
You guys are lifesavers. All of the sudden aws-sdk-mock
stopped mocking and I couldn't trace the cause (plus, deps on that library are outdated and there have been no commits in about half a year).
I should have just been doing this all along.
@joerx thank you
Thanks, this helped me to write my unit tests
hello how can i write testcase for uploading to s3, and create bucket in nodejs
Nice. Great example. It works me for listObjectsV2 also. I think it will support all.
Nice. Great example. It works me for listObjectsV2 also. I think it will support all.
Hi, Can you please share you code for mocking listObjectsV2
?
Thank you @joerx 😄
thanks a lot
how to create such stub for s3.upload and how to restore them ?
const putObjectStub = AWS.S3.prototype.putObject = sinon.stub();
putObjectStub.yields(null, 'data');
const uplaodStub = (AWS.S3.prototype.upload= sinon.stub());
uplaod.yields(null, 'data');
Thanks
Thank you for putting this out there!