qunit中的jasmine 2.0版本的expect()

时间:2014-04-23 15:06:55

标签: javascript jasmine qunit

在QUnit中,您可以指定预期在测试中运行的断言数量  即 expect(2)

有没有办法在Jasmine 2.0中这样做?虽然他们的文档很清楚,但我似乎无法在任何地方找到详尽的API列表。

我想在不必嵌套的情况下运行多个异步测试。例如,第三次测试应该可靠地持续。但如果前两个完全失败,那么灯仍然是绿色的,因为done()被调用。

it("Should run callbacks with correct data", function(done){

    //expect(3); //QUnit syntax

    test.fastResponse(function(data){
        expect(data).toEqual({a:1, b:2});
    });

    test.fastResponse(function(data){
        expect(data).toEqual({a:1, b:2});
    });

    test.slowResponse(function(data){
        expect(data).toEqual({a:1, b:2});
        //This should fail if the other two tests didn't run
        done();
    });

});

1 个答案:

答案 0 :(得分:1)

我建议添加一个callCount变量,并在每次调用回调时将其递增1。然后,您可以在致电expect(callCount).toBe(x)之前done()

另一方面,您也可以使用间谍来实现这一目标:

it("Should run callbacks with correct data", function(done){
    var callback = jasmine.createSpy("callback");

    var actuallyDone = function() {
        expect(callback.calls.count()).toBe(2);
        expect(callback.calls.all()[0].args[0]).toEqual({a:1, b:2});
        expect(callback.calls.all()[1].args[0]).toEqual({a:1, b:2});
        done();
    };

    test.fastResponse(callback);
    test.fastResponse(callback);

    test.slowResponse(function(data){
        expect(data).toEqual({a:1, b:2});
        actuallyDone();
    });

});