Chai断言没有在JSDOM Env块中执行

时间:2016-09-16 07:42:28

标签: javascript mocha chai jsdom

我刚开始用mochachaijsdom编写我的前端单元测试。当我尝试按照这些教程进行操作时 - 即使我将其设置为失败,我也会传递测试。其他所有内容都按照预期设置并正常工作jQuery, setup.js, window等。唯一的问题是我的断言在jsdom env块中根本没有被执行。

这是我的测试:

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
  });
});

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您似乎错过了JSONArray posts = response.optJSONArray("data"); int arrayCount = posts.length(); 中的done参数:

it

否则mocha会认为你的it('should fail', function (done) { 是同步的并且在创建jsdom env之前完成。