2014-04-23 15 views
0

在QUnit,你可以指定估计有多少断言测试
expect(2)茉莉2.0版本的期待()在qunit

中运行是否有办法在茉莉花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(); 
    }); 

}); 
+0

你可以添加一些茉莉花测试一些伪代码来说明你的意思?你的问题并不清楚。 –

+0

@GregBurghardt示例添加了 – robC

+0

啊,好的。所以你基本上是在测试竞赛条件。 –

回答

1

我建议添加callCount变量,和由1各回调调用时递增它。然后您可以在致电done()之前expect(callCount).toBe(x)

在另一方面,你可以使用间谍来达到这个还有:

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(); 
    }); 

}); 
+0

是的,我认为间谍是要走的路 - 谢谢 – robC