有没有办法测试 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()
,因为它等于测试中的竞争条件,所以它本质上我们必须相信这种情况下的设计。如果有人对此有任何其他想法,请发表评论。
关于javascript - 测试未使用 Jest 调用的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53194913/