测试不是用 Jest 调用的回调?
Testing callbacks that are not called with Jest?
有没有办法测试 Jest 没有调用回调?
例如:
o.subscribe(cb, cbError, cbComplete);
cb
和 cbComplete
回调应该触发,cbError
回调不应该触发。
有没有办法测试 cbError
从未被调用过?
根据@Richard 的评论:
let error = false;
let cbError = ()=> { error =true };
let cbComplete = ()=>{
complete = true;
expect(complete).toBeTruthy();
expect(error).toBeFalsy();
done(); //This is the async callback that Jest provides to let Jest know that the test is done.
}
在完整的回调中,我们测试错误仍然是 false
。由于在 Observable 完成后它为 false,因此从未调用 cbError 回调,因为该回调与其他回调是互斥的。
旁注
这种情况表明未调用 cbError。按照设计,cbError 和 cbComplete 回调是相互排斥的,但我们不能在两个地方都从 jest 调用 done()
,因为它在测试中等于竞争条件,所以我们必须相信它在这种情况下的设计。如果有人对此有任何其他想法,请发表评论。
有没有办法测试 Jest 没有调用回调?
例如:
o.subscribe(cb, cbError, cbComplete);
cb
和 cbComplete
回调应该触发,cbError
回调不应该触发。
有没有办法测试 cbError
从未被调用过?
根据@Richard 的评论:
let error = false;
let cbError = ()=> { error =true };
let cbComplete = ()=>{
complete = true;
expect(complete).toBeTruthy();
expect(error).toBeFalsy();
done(); //This is the async callback that Jest provides to let Jest know that the test is done.
}
在完整的回调中,我们测试错误仍然是 false
。由于在 Observable 完成后它为 false,因此从未调用 cbError 回调,因为该回调与其他回调是互斥的。
旁注
这种情况表明未调用 cbError。按照设计,cbError 和 cbComplete 回调是相互排斥的,但我们不能在两个地方都从 jest 调用 done()
,因为它在测试中等于竞争条件,所以我们必须相信它在这种情况下的设计。如果有人对此有任何其他想法,请发表评论。