I have some tests that look like this:
it('does stuff', function(done) {
somePromise.then(function () {
expect(someSpy).to.have.been.called
done()
})
})
If the assertion in that test fails, it will fail silently, and the test itself will timeout because done()
is never reached. For example, this:
it('does stuff', function(done) {
expect(1).to.equal(2)
somePromise.then(function () {
expect(someSpy).to.have.been.called
done()
})
})
will fail with a nice error explaining that we were expecting 1 but got 2. However, this:
it('does stuff', function(done) {
somePromise.then(function () {
expect(1).to.equal(2)
expect(someSpy).to.have.been.called
done()
})
})
will fail due to timeout. I gather the issue is that I'm not in the "it" context, but what's the best way to deal with this?
Failed assertions are basically thrown errors. You can catch
them like you can any error in a Promise.
it('does stuff', function(done) {
somePromise.then(function () {
expect(1).to.equal(2)
expect(someSpy).to.have.been.called
done()
})
.catch(done)
})