Executing Tests Asynchronously
Since services operate in an asynchronous manner it may be useful to execute a service's entire unit test asynchronously. This can speed up the overall time it takes to complete a full testing cycle since a particular long unit test will not block other unit tests from executing. We can set up our unit test to return a promise, which will resolve as either a success or failure depending on the activity of the test.
describe('verify search', () => {
it('searches for the correct term',
fakeAsync(inject([SearchWiki, MockBackend], (searchWiki, mockBackend) => {
return new Promise((pass, fail) => {
...
});
})));
});
Instead of only using inject
, we use fakeAsync
to wrap it and fulfill dependencies and execute the test in an asynchronous process. Using fakeAsync
requires us to return a Promise, which we use to resolve the competition of our test by calling pass
, or fail
, depending on the results of our test.