Skip to content

Commit c3772a8

Browse files
jedwards1211domenic
authored andcommitted
Add an example of how to use async/await to the README
1 parent e237fd2 commit c3772a8

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

README.md

+11
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,17 @@ it("should change the state", function (done) {
179179

180180
Notice how `.notify(done)` is hanging directly off of `.should`, instead of appearing after a promise assertion. This indicates to Chai as Promised that it should pass fulfillment or rejection directly through to the testing framework. Thus, the above code will fail with a Chai as Promised error (`"expected promise to be fulfilled…"`) if `promise` is rejected, but will fail with a simple Chai error (`expected "before" to equal "after"`) if `otherState` does not change.
181181

182+
### Working with `async`/`await` and Promise-Friendly Test Runners
183+
184+
Since any assertion that must wait on a promise returns a promise itself, if you're able to use `async`/`await` and your test runner supports returning a promise from test methods, you can await assertions in tests. In many cases you can avoid using Chai as Promised at all by performing a synchronous assertion after an `await`, but awaiting `rejectedWith` is often more convenient than using `try`/`catch` blocks without Chai as Promised:
185+
186+
```javascript
187+
it('should work well with async/await', async () => {
188+
(await Promise.resolve(42)).should.equal(42)
189+
await Promise.reject(new Error()).should.be.rejectedWith(Error);
190+
});
191+
```
192+
182193
### Multiple Promise Assertions
183194

184195
To perform assertions on multiple promises, use `Promise.all` to combine multiple Chai as Promised assertions:

0 commit comments

Comments
 (0)