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