I'm developing a frontend app for a REST API. I'm using Protractor for end-to-end tests with the API mocked out. I was able to mock AUTHtoken API response and navigate to chosen URL, but page displayed under destined URL renders empty. Here's my code:
describe('e2e tests', function() {
it('FO tests', function() {
browser.addMockModule('WebClientApp', function() {
console.log('test');
angular.module('WebClientApp', ['ngMockE2E'])
.run(function($httpBackend) {
console.log('test2');
$httpBackend.whenPOST('http://0.0.0.0:9000/api/organizations').respond(200);
$httpBackend.whenPOST('/api/auth/get_resource_by_token').respond(200);
$httpBackend.whenGET('/api/auth/current_resource').respond(200);
$httpBackend.whenGET(/.*/).respond(200);
});
});
browser.getRegisteredMockModules();
browser.get('http://0.0.0.0:9000/#/organizations/profile');
browser.pause();
});
});
Sadly, Protractor console does not provide information about errors during page render.
Actually, response with status 200 does not ensure you have authenticated. You need to pass and handle some token/session header.
Also $httpBackend.flush();
is needed. Then test should pass.
$httpBackend.expectGET('http://0.0.0.0:9000/#/organizations/profile');
$httpBackend.flush();
More explanation will be found on the last it(...) block in Angular doc for $httpBackend
来源:https://stackoverflow.com/questions/30928354/mocking-api-with-httpbackend-protractor