sinon-vcr
v0.0.3
Published
sinon-vcr
Readme
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
requirecalls 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/.Usethe 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 FakeServerinit:
function( capture: string )
Intitializes VCR and sets it up to receive
usecalls.
Optionally passing the string
capturewill allow ajax to pass through, and place adebuggerstatement in theresetmethod that will allow you an opportunity to pause Javascript exeution and save a.harfile.
VCR.init(); // Mock AJAX
VCR.init('capture'); // AJAX runs normally, stop JS execution at cleanupreset:
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 [email protected]:lunchtime-labs/sinon-vcr.git
npm installUsage
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.
