javascript - 测试未使用 Jest 调用的回调?

标签 javascript node.js typescript jestjs sinon

有没有办法测试 Jest 是否未调用回调?

例如:

o.subscribe(cb, cbError, cbComplete);

应触发 cbcbComplete 回调,而不应触发 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/

相关文章:

javascript - 取消分割两个数组 Javascript

node.js - 创建付款时结帐时出现此错误 "Bad request - parameter error"

reactjs - 输入 React Router 路由器组件?使困惑

javascript - 在 TypeScript 中将类转换为模块

json - 直接访问 JSON 对象属性并记录它

javascript - HTML5 Canvas 避免任何子像素渲染

javascript - 如何在 JavaScript 中同步进行两个异步调用?

javascript - MathJax 未定义

html - 使用 Node 的 http.get 获取 UTF-8 html 内容

javascript - 使用 php 的实时功能