Merge branch 'winh-testing-promises' into 'master'
Document Promise testing best practice See merge request !11284
This commit is contained in:
commit
6ca5a9890c
|
@ -68,6 +68,68 @@ describe('.methodName', () => {
|
|||
});
|
||||
});
|
||||
```
|
||||
#### Testing Promises
|
||||
|
||||
When testing Promises you should always make sure that the test is asynchronous and rejections are handled.
|
||||
Your Promise chain should therefore end with a call of the `done` callback and `done.fail` in case an error occurred.
|
||||
|
||||
```javascript
|
||||
/// Good
|
||||
it('tests a promise', (done) => {
|
||||
promise
|
||||
.then((data) => {
|
||||
expect(data).toBe(asExpected);
|
||||
})
|
||||
.then(done)
|
||||
.catch(done.fail);
|
||||
});
|
||||
|
||||
/// Good
|
||||
it('tests a promise rejection', (done) => {
|
||||
promise
|
||||
.catch((error) => {
|
||||
expect(error).toBe(expectedError);
|
||||
})
|
||||
.then(done)
|
||||
.catch(done.fail);
|
||||
});
|
||||
|
||||
/// Bad (missing done callback)
|
||||
it('tests a promise', () => {
|
||||
promise
|
||||
.then((data) => {
|
||||
expect(data).toBe(asExpected);
|
||||
})
|
||||
});
|
||||
|
||||
/// Bad (missing catch)
|
||||
it('tests a promise', (done) => {
|
||||
promise
|
||||
.then((data) => {
|
||||
expect(data).toBe(asExpected);
|
||||
})
|
||||
.then(done)
|
||||
});
|
||||
|
||||
/// Bad (use done.fail in asynchronous tests)
|
||||
it('tests a promise', (done) => {
|
||||
promise
|
||||
.then((data) => {
|
||||
expect(data).toBe(asExpected);
|
||||
})
|
||||
.then(done)
|
||||
.catch(fail)
|
||||
});
|
||||
|
||||
/// Bad (missing catch)
|
||||
it('tests a promise rejection', (done) => {
|
||||
promise
|
||||
.catch((error) => {
|
||||
expect(error).toBe(expectedError);
|
||||
})
|
||||
.then(done)
|
||||
});
|
||||
```
|
||||
|
||||
#### Stubbing
|
||||
|
||||
|
|
Loading…
Reference in New Issue