sinon-vcr v0.0.3
Sinon-VCR
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:
- Depends on AJAX requests from the browser.
- Conforms to CommonJS syntax. (supports
require
calls using i.e. Browserify or Webpack). - Uses SinonJS.
Setup
npm install -D sinon-vcr
Usage
Setup
Create a mock (see below), or see Lunchtime Labs MockBuilder to learn how to generate them.
Place 'mock' files into your 'spec' or 'test' directory where they can be read.
i.e.
spec/fixtures/vcr/
.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 adebugger
statement in thereset
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.