Giter Club home page Giter Club logo

mock-aws-sinon's Introduction

mock-aws-sinon

A quick and simple library that lets you use Sinon stubs with aws-sdk.

Why is this needed?

aws-sdk creates services in a weird way, so it isn't possible to do, say:

sinon.stub(AWS.S3.prototype, "getObject").returns({
   an: "object"
})

Because AWS.S3.prototype doesn't actually have a function called getObject. It is possible to just stub an instance of new AWS.S3, but chances are you instantiating that in your non-test code, and don't want to structure it weirdly just so that you can run tests properly.

How do I use it?

First, install it:

npm install mock-aws-sinon

Then, rather than call sinon.stub, you can call this module as a function, which will return a stub. Like so:

var mockAWSSinon = require('mock-aws-sinon');

mockAWSSinon('S3','getObject').returns({
    an: 'object'
});

new AWS.S3().getObject({Bucket: 'test'}, function(err, response) {
    assert.equal(response.an, 'object') // true
})

If you wish to use the sinon vertification helpers, you can get run the function again to retrieve the same stub. So instead of doing:

AWS.S3.prototype.getObject.calledOnce()

you write:

mockAWSSinon('S3','getObject').calledOnce()

How does it actually work?

It stubs out AWS.Request.send, which is available. That stub then returns a mock AWS.Response object with the return value you have provided. This idea was copied from fakeaws, which works great except that I couldn't find a way to call verification methods on stubbed code, which this allows you to do.

Does it work?

I think so? It's a very quick project I'm using in literally two or three tests, so I wouldn't say it is thoroughly tested. If you try it and run into problems let me know.

mock-aws-sinon's People

Contributors

alastaircoote avatar

Watchers

Elliot Foster avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.