jasmine TypeError:无法调用null的方法'expect'

时间:2014-03-06 04:00:09

标签: javascript scope jasmine

当我添加setTimeout时,我收到了以下错误:

// Suite
describe("sidebar", function() {
    setTimeout(function(){
        document.querySelector('.fa-bars').click();
        expect(document.getElementById('sidebar')!=null).toEqual(true);
    }, 2000);

});

但我不明白如何在setTimeout中调用它甚至可以触发此错误?

2 个答案:

答案 0 :(得分:2)

您正在使用同步测试来测试异步代码。尝试

// Suite
describe("sidebar", function() {
    runs( function(){ // encapsulates async code
        setTimeout(function(){
            document.querySelector('.fa-bars').click();
            expect(document.getElementById('sidebar')!=null).toEqual(true);
        }, 2000);
    });

});

有关详细信息,请查看https://github.com/pivotal/jasmine/wiki/Asynchronous-specs

答案 1 :(得分:1)

你需要调用完成回调:

describe("sidebar", function() {
    it('should work with setTimeout', function(done) {
        setTimeout(function(){
            document.querySelector('.fa-bars').click();
            expect(document.getElementById('sidebar')!=null).toEqual(true);
            done();
        }, 2000);
    });
});