1.3.2 • Published 7 years ago

ngx-http-test v1.3.2

Weekly downloads
73
License
ISC
Repository
github
Last release
7 years ago

ngx-http-test

Build Status Dependency Status devDependency Status peerDependency Status

Makes testing Http calls in Angular 2 as easy as were in AngularJS.

Installation

npm install ngx-http-test --save-dev

Usage

// First add it as a provider
beforeEach(() => {
  TestBed.configureTestingModule({
    providers: [
      ...
      FakeBackend.getProviders()
    ]
  });
});

// Get the instance of it
beforeEach(inject([..., FakeBackend], (..., fakeBackend: FakeBackend) => {
  backend = fakeBackend;
}));

// Use it in a test case
it('should call fake endpoint', (done) => {
  backend.expectGET('users/blacksonic').respond({ username: 'blacksonic' });
  
  subject.getProfile('blacksonic').subscribe((response) => {
    expect(response).toEqual({ username: 'blacksonic' });
    done();
  });
})

It is possible to specify every detail of the response.

// can be object, it will be json stringified if not a string
let responseBody = { username: 'blacksonic' };
let responseStatus = 200;
let responseHeaders = { 'Content-Type': 'application/json' };

backend
  .expectGET('users/blacksonic')
  .respond(responseBody, responseStatus, responseHeaders);

It is not necessary to give the response, in that case the backend will respond with 200 empty response.

Also the expected url can be given as a regular expression instead of a string.

For requests outside of GET the request body can be also specified.

backend.expectPost(
  'usernamepassword/login', // url
  { username: 'blacksonic', password: 'secret' }, // payload
  { 'Content-Type': 'application/json' } // headers
).respond(responseForm);

Convenience methods available for different kind of requests: expectGet, expectPost, expectDelete, expectPut, expectPatch, expectHead, expectOptions.

After the tests run it is possible to check for outstanding connections or expectations that are not addressed.

afterEach(() => {
  backend.verifyNoPendingRequests();
  backend.verifyNoPendingExpectations();
});

By default expectations get verified instantly, but this can be switched off and do the verification by hand.

it('should call fake endpoint', (done) => {
  backend.setAutoRespond(false);
  backend.expectGET('users/blacksonic').respond({ username: 'blacksonic' });
  
  subject.getProfile('blacksonic').subscribe((response) => {
    expect(response).toEqual({ username: 'blacksonic' });
    done();
  });
  
  backend.flush();
})

The flush method resolves all pending connections. It can also be resolved one by one with the flushNext method.

1.3.2

7 years ago

1.3.1

7 years ago

1.2.0

7 years ago

1.0.0

7 years ago