ekostadinov
ekostadinov

Reputation: 6950

Chai assertions not executed inside JSDOM Env block

I've just started writing my front-end unit tests with mocha, chai and jsdom. When I try to follow the tutorials based on those - I'm getting passing tests even when I set them to fail. Everything else is setup and works as expected jQuery, setup.js, window etc. The only issue is that my Assertions are not getting executed at all inside the jsdom env block.

This is my test:

var chai = require('chai'),
    expect = chai.expect,
    jsdom = require('jsdom'),
    fs = require('fs'),
    jquery = fs.readFileSync('./js/vendor/jquery-3.0.0.min.js', 'utf-8');

describe('UI DOM tests', function () {

  it('should fail', function () {
    // simple html
    var htmlFragment = fs.readFileSync('./test/runner.html');

    jsdom.env({
      html: htmlFragment,
      src: [jquery, '../node_modules/chai/chai.js'],
      done: function (err, window) {
        var $ = window.$;

        expect(true).eql(false); // nothing happens

        done();
      }
    });

    expect(true).eql(false); // assert fails as expected
  });
});

Any help is greatly appreciated.

Upvotes: 0

Views: 92

Answers (1)

Benja
Benja

Reputation: 4154

it seems you're missing the done argument in your it:

it('should fail', function (done) {

otherwise mocha will think your it is synchronous and finish before your jsdom env is created.

Upvotes: 3

Related Questions