我刚开始用mocha,chai和jsdom编写我的前端单元测试。当我尝试按照这些教程进行操作时 - 即使我将其设置为失败,我也会传递测试。其他所有内容都按照预期设置并正常工作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
});
});
非常感谢任何帮助。
答案 0 :(得分:3)
您似乎错过了JSONArray posts = response.optJSONArray("data");
int arrayCount = posts.length();
中的done
参数:
it
否则mocha会认为你的it('should fail', function (done) {
是同步的并且在创建jsdom env之前完成。