Sinon.Stub-Knoten im AWS-SDK

Bin ich zu schreiben versucht, einige der Testabdeckung für eine app, die verwendet das aws-sdk NPM-Modul, treibt die Dinge bis zu einer SQS-Warteschlange, aber ich bin nicht sicher, wie Sie zu verspotten, die Dinge richtig.

Hier ist mein test bisher:

var request = require('superagent'),
    expect = require('chai').expect,
    assert = require('chai').assert,
    sinon = require('sinon'),
    AWS = require('aws-sdk'),
    app = require("../../../../app");

describe("Activities", function () {

    describe("POST /activities", function () {

        beforeEach(function(done) {
            sinon.stub(AWS.SQS.prototype, 'sendMessage');

            done();
        });

        afterEach(function(done) {
            AWS.SQS.prototype.sendMessage.restore();

            done();
        });

        it("should call SQS successfully", function (done) {
            var body = {
                "custom_activity_node_id" : "1562",
                "campaign_id" : "318"
            };

            reqest
            .post('/v1/user/123/custom_activity')
            .send(body)
            .set('Content-Type', 'application/json')
            .end(function(err, res) {
                expect(res.status).to.equal(200)

                assert(AWS.SQS.sendMessage.calledOnce);
                assert(AWS.SQS.sendMessage.calledWith(body));
            });
        });

    });

});

Den Fehler, den ich sehe, ist:

  1) Activities POST /activities "before each" hook:
     TypeError: Attempted to wrap undefined property sendMessage as function

  2) Activities POST /activities "after each" hook:
     TypeError: Cannot call method 'restore' of undefined

Ich bin ein bisschen ein newb, wenn es um sinon.stub oder Verspottung Objekte in JavaScript, also bitte entschuldigt meine Unwissenheit,

  • Haben Sie es geschafft, eine Lösung zu finden, um diese noch?
  • gesehen/ausprobiert aws-sdk-mock npm-Modul ? (siehe Antwort unten)
  • zu der Zeit habe ich es geschafft stub des service mit proxyquire und sinon und habe es funktioniert. Ich hatte noch nicht einen Blick auf die aws-sdk-mock noch. Haben Sie es verwendet?
  • ja, wir sind mit aws-sdk-mock (vereinfacht die Sinon.Stub) 🙂
Schreibe einen Kommentar