A NodeJS module to be used alongside Protractor
npm install --save-dev protractor-fake-backend
In your protractor configuration file you need to do the following:
exports.config = {
// other stuff
onPrepare: function() {
// other stuff
require('protractor-fake-backend').config = {
mocksDir: 'path/to/mocks/directory', // default 'mocks'
defaultMocks: ['some/mock', 'another/**', {request:{}, response:{}}] // default []
};
}
}
mocksDir
should receive the relative path of the directory that contains the mock files.defaultMocks
must be an array. The array can contain mock objects and file names (strings). These are included every time (unlessexcludeDefaultMocks = true
). You can use patterns for file names
Mock files must be written in javascript and must export a mock object or an array of mock objects
module.exports = {
request: {
path: '/the/path',
method: 'GET'
},
response: {
data: 'bla'
}
}
or
module.exports = [
{
// first mock
}, {
// second mock
}
]
{
request: {
path: '/must/start/with/a/slash',
method: 'POST',
data: 'request body',
headers: {
first: 1,
second: 'bla'
},
params: {
first: 1,
second: 'woo'
}
},
response: {
status: 200,
data: 'bla',
headers: {
first: 1,
second: 'two'
}
}
}
var fakeBackend = require('protractor-fake-backend');
var page = require('your/page/object');
describe('your test', function() {
beforeAll(function() {
fakeBackend(['first/file', 'second/file']);
page.get();
});
it('check the last request', function() {
var expectation = {
path: '/the/path',
method: 'POST',
body: 'request body'
};
fakeBackend.clearRequests();
page.someButton.click();
fakeBackend.getLastRequest().then(function(request) {
expect(request).toEqual(expectation);
});
});
});
Adds the mock module on protractor. Needs to be called in each spec.
mocks
if not passed, only default mocks will be included.
Can be:
- A string representing a file name or a pattern. E.g.
'some/file'
or'file/**'
- An array that can contain a combination of file names(or patterns) and mock objects
excludeDefaultMocks
by default is false
. As the name says, if you pass true
then the default mocks declared in config won't be added
Removes the mock module from protractor
Returns an array containing all intercepted requests
Returns the last intercepted request
Deletes all the intercepted requests
Adds one or more mocks. The mock
param can be an Object or an Array of Objects
Removes all the mocks from the module