测试未用Jest调用的回调?

时间:2018-11-07 17:43:16

标签: javascript node.js typescript jestjs sinon

是否有一种方法可以测试是否未使用Jest调用回调?

例如:

o.subscribe(cb, cbError, cbComplete);

应触发cbcbComplete回调,而不应触发cbError回调。

有没有一种方法可以测试从未调用过cbError

1 个答案:

答案 0 :(得分:0)

每个@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回调是互斥的,但是我们不能在两个地方都开玩笑地调用done(),因为它在测试中等于竞争条件,因此从本质上讲,我们必须信任在这种情况下的设计。如果有人对此有其他想法,请发表评论。