2016-09-16 54 views
0

我刚刚开始使用mocha,chaijsdom编写我的前端单元测试。当我尝试按照这些教程进行操作时 - 即使当我将它们设置为失败时,我得到也会通过测试。其他一切都设置和按预期工作jQuery, setup.js, window等。唯一的问题是,我的断言没有得到在jsdom env块内执行。Chai声明不在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 
    }); 
}); 

任何帮助是极大的赞赏。

回答

3

您似乎缺少done参数在it

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

否则摩卡会认为你it是同步的,完成创建您的jsdom ENV前。

+1

谢谢队友,这是问题所在。我真的浪费了很多时间调试,但没有考虑到这一点。 – ekostadinov