Sinon.Stub im Knoten mit AWS-SDK

Ich versuche, eine Testberichterstattung für eine App zu schreiben, die das @ verwendeaws-sdk NPM-Modul, das die Dinge in eine SQS-Warteschlange hochschiebt, aber ich bin nicht sicher, wie ich die Dinge richtig verspotten soll.

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));
            });
        });

    });

});

Der 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 darum gehtsinon.stub oder Objekte in JavaScript verspotten, bitte entschuldigen Sie meine Unwissenheit

Antworten auf die Frage(7)

Ihre Antwort auf die Frage