In JUnit you can fail a test by doing:
fail("Exception not thrown");
What's the best way to achieve the same using Chai.js?
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.
Chai is an assertion library that is mostly used alongside Mocha. It can be used both as a BDD / TDD assertion library for NodeJS and can be paired with any JavaScript testing framework. It has several interfaces that a developer can choose from and looks much like writing tests in English sentences.
Note expect and should uses chainable language to construct assertions, but they differ in the way an assertion is initially constructed. In the case of should , there are also some caveats and additional tools to overcome the caveats. var expect = require('chai').
There's assert.fail()
. You can use it like this:
assert.fail(0, 1, 'Exception not thrown');
There are many ways to fake a failure – like the assert.fail()
mentioned by @DmytroShevchenko –, but usually, it is possible to avoid these crutches and express the intent of the test in a better way, which will lead to more meaningful messages if the tests fail.
For instance, if you expect a exception to be thrown, why not say so directly:
expect( function () { // do stuff here which you expect to throw an exception } ).to.throw( Error );
As you can see, when testing exceptions, you have to wrap your code in an anonymous function.
Of course, you can refine the test by checking for a more specific error type, expected error message etc. See .throw
in the Chai docs for more.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With