如果花费太多时间,则无法通过茉莉花测试

时间:2018-07-05 13:48:27

标签: jasmine

我正在使用独立的茉莉花(无业障) 我有一个执行功能并期望结果的简单测试:

  it("...", function() {
    expect(f(x)).toBe(y);
  });

如果f()函数执行的时间超过X毫秒,如何使该测试失败并显示特定的错误消息?

谢谢

1 个答案:

答案 0 :(得分:0)

这是一个可能对您有帮助的小测试

require('jasmine');

function slow(n) {
    let timer = 10000000000;
    while(timer--) {
        // do nothing, just waiting
    }
    return n;
}

describe('My test', () => {
    it('test slow function', (done) => {
        setTimeout(() => {
            done.fail('Running to much time');
        }, 10000);

        expect(slow(1)).toBe(1);

        done();
    });
});

在我的示例中,slow函数可以是您的f函数。因此,我们的想法是,如果slow不是async,那么代码将等待直到完成,因此,我们可以使用async的{​​{1}}功能,只需声明我们收到jasmine回调或返回done,那么Promise将等待jasmine被执行或done被解决。

我的PC中的代码运行时间为12s,但是如果要花10s,我将调用Promise

如果您拥有done.fail()的配置jasmine,则测试将在调用"stopSpecOnExpectationFailure": true之后立即停止。

请参阅async tests的一些示例。

希望有帮助