This assert.asyncThrows
custom assertion allows us to write tests against failing async code, usually as a result of a server error (4xx/5xx response).
test('If the index route errors, I see a message', async function(assert) {
server.create('post');
server.get('/posts/:id', { errors: ['The site is down'] }, 500); // force Mirage to error
await assert.asyncThrows(() => {
return visit('/posts/1');
}, 'GET /posts/1 returned a 500');
assert.ok(find(':contains(The site is down)').length > 1);
});
Without this helper, a failed XHR request would trigger an exception in QUnit's test suite.
How to use
- Install Ember CLI Custom Assertions
- Add the file below under
/tests/assertions/async-throws.js
Now you can use assert.asyncThrows
in your test. The first argument is a function that's expected to return a promise; the second is a string that must match the exception you expect to be thrown.