Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
implemented test in throw.spec.js & got it passing
  • Loading branch information
prust committed Feb 15, 2020
commit 56e2232bc43aaa9a9feaea5921fae860db0d3b3a
34 changes: 34 additions & 0 deletions test/unit/throw.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

/* eslint no-throw-literal: off */

var sinon = require('sinon');
var Mocha = require('../../lib/mocha');
var Suite = Mocha.Suite;
var Test = Mocha.Test;
Expand All @@ -13,11 +14,13 @@ var STATE_FAILED = Runnable.constants.STATE_FAILED;
describe('a test that throws', function() {
var suite;
var runner;
var sandbox;
var uncaughtHandlers;

beforeEach(function() {
suite = new Suite('Suite', 'root');
runner = new Runner(suite);
sandbox = sinon.createSandbox();

// see https://github.com/mochajs/mocha/pull/2983#issuecomment-350428522
uncaughtHandlers = process.listeners('uncaughtException') || [];
Expand Down Expand Up @@ -169,4 +172,35 @@ describe('a test that throws', function() {
runner.run();
});
});

describe('stack', function() {
it('should include the stack when throwing async', function(done) {
var test = new Test('im async and throw null async', function(done2) {
process.nextTick(function throwError() {
throw new Error('test error');
});
});
suite.addTest(test);
runner = new Runner(suite);
sandbox.stub(runner, 'fail');

runner.on(EVENT_RUN_END, function() {
try {
expect(runner.fail, 'to have all calls satisfying', [
expect.it('to be a', Runnable),
expect.it('to be an', Error).and('to satisfy', {
message: /test error/i,
stack: /throwError/i,
uncaught: true
})
]).and('was called once');
} catch (err) {
return done(err);
}

done();
});
runner.run();
});
});
});