sinon-vcr

0.0.3 • Public • Published

Sinon-VCR

Circle CI

Code Climate

Sinon-VCR integrates with the sinon.fakeServer method of SinonJS, allowing developers to select a set of XHR responses to playback during test interactions.

Requirements

You must have a test suite that:

  1. Depends on AJAX requests from the browser.
  2. Conforms to CommonJS syntax. (supports require calls using i.e. Browserify or Webpack).
  3. Uses SinonJS.

Setup

npm install -D sinon-vcr

Usage

Setup

  1. Create a mock (see below), or see Lunchtime Labs MockBuilder to learn how to generate them.

  2. Place 'mock' files into your 'spec' or 'test' directory where they can be read.

    i.e. spec/fixtures/vcr/.

  3. Use the mocks in your tests as AJAX responses.

Example using Karma/Browserify

karma.conf.js

    browserify: {
      paths: [ __dirname + "/spec/fixtures/" ]
    },

spec/fixtures/vcr/autoplayFalse.js

var response = {
   "autoplay": "false"
};

module.exports = [
  {
    method: "GET",
    url: /www\.example\.com/,
    status: 200,
    headers: {
      "Content-Type": "application/json"
    },
    response: JSON.stringify(response)
  }
]

Mocha Example

var VCR = require('sinon-vcr');
var autoplayFalse = require('vcr/autoplayFalse');

describe('myObject', function() {
  beforeEach(function() {
    VCR.init();
  });

  afterEach(function() {
    VCR.reset();
  });

  it('responds with autoplay false', function(done) {
    VCR.use(autoplayFalse);

    $.get("http://www.example.com/", function (response) {
      expect(response.autoplay).to.eq(false);
      done();
    });
  });
});

API

server

Allows direct access to sinon's FakeServer

VCR.server.requests // Show requests received by Sinon FakeServer

init:

function( capture: string )

Intitializes VCR and sets it up to receive use calls.

Optionally passing the string capture will allow ajax to pass through, and place a debugger statement in the reset method that will allow you an opportunity to pause Javascript exeution and save a .har file.

VCR.init(); // Mock AJAX
VCR.init('capture'); // AJAX runs normally, stop JS execution at cleanup

reset:

function ()

Restore the sinon fakeServer between requests.

VCR.reset();

use:

function (mock: object)

Use an XHR mock for XHR playback.

VCR.use(require('vcr/mock');

Contributing

Setup

git clone git@github.com:lunchtime-labs/sinon-vcr.git
npm install

Usage

gulp or gulp test for TDD with Karma.

Tests

Uses Karma test runner with Mocha and the Jquery-Chai expectations library, with Sinon for mocking.

Readme

Keywords

none

Package Sidebar

Install

npm i sinon-vcr

Weekly Downloads

0

Version

0.0.3

License

MIT

Last publish

Collaborators

  • lpender