title: Mocha is throwing Promise rejection error in Test expect error condition. How to fix this?
body: <p>I'm using Mocha and Chai for unit tests. My test case looks like below.</p>
  
  <pre class="lang-js prettyprint-override"><code>describe('1. Users APIs', () =&gt; {
      it('1.1 Get Users', (done) =&gt; {
          controller.getCaseDetails(req, res, () =&gt; { }).then(data =&gt; {
              except(data).to.be.have.property(statusCode, 400);
              done();
          });
      });
  });
  </code></pre>
  
  <p>If the test case fails then I'm getting below error.</p>
  
  <pre><code>  1) 1. Users APIs.
         1.1 Get Users:
       Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/home/techjini/Techjini/node-projects/CollectionsApp-NodeJS/src/cases/test/getCases.test.js)
        at listOnTimeout (internal/timers.js:549:17)
        at processTimers (internal/timers.js:492:7)
  </code></pre>
  
  <p>To fix this I have added <code>.catch</code> to then block and <code>done()</code> inside catch. Then the test got succeeded. how to fix this issue.</p>
  
  <p>As per my backtrack I got that If I add catch block then the error is handled and but mocha wont get any Assertion errors If I'm not wrong.</p>
  
  <p>I want to print proper error message in-case of <code>except</code> failure.</p>
  
  <p>Any kind of help will much be appreciated.</p>