Jasmine array.length期待

时间:2014-04-28 17:00:07

标签: javascript jasmine

我是茉莉花js测试框架的新手,今天得到了一些奇怪的结果。

请参阅以下代码(search是一个预先形成api请求并返回promise的函数):

it('should be able to search', function() {
    search('string').done(function(result) {
        expect(result.length).toBeGreaterThan(1); //true
        console.log(result.lenght); // undefined
    });
});

问题在于,由于我必须修复的一些错误,承诺的结果未定义,但测试标记为Success。我发现这有误导性,如果我深入研究这一点,我会相信测试是成功的,但显然不是。这是预期的行为吗?

2 个答案:

答案 0 :(得分:11)

你在console.log中有拼写错误(result.lenght)请试试这个。

it('should be able to search', function() {
search('string').done(function(result) {
    expect(result.length).toBeGreaterThan(1); //true
    console.log(result.length); // undefined
});
});

答案 1 :(得分:3)

对于测试异步函数,您的测试需要略有不同。从最新的Jasmine (2.0) documentation开始,异步测试编写如下:

beforeEach(function(done) {
    setTimeout(function() {
        // do setup for spec here

        // then call done() in beforeEach() to start asynchronous test
        done();
    }, 1);
});

it('should be able to search', function(done) {
    search('string').done(function(result) {
        expect(result.length).toBeGreaterThan(1); //true

        // call done() in the spec when asynchronous test is complete
        done();
    });
});