如何使用Sinon监视导入的函数?

2024-04-28

假设我们想使用 Sinon 测试另一个函数是否调用了一个特定函数。

fancyModule.js

export const fancyFunc = () => {
  console.log('fancyFunc')
}

export default const fancyDefault = () => {
  console.log('fancyDefault')
  fancyFunc()
}

fancyModule.test.js

import sinon from 'sinon'
import fancyDefault, { fancyFunc } from '../fancyModule'

describe('fancyModule', () => {
  it('calls fancyFunc', () => {
    const spy = sinon.spy(fancyFunc)
    fancyDefault()
    expect(spy.called).to.be.true
  })
})

当我运行此测试时,实际值始终是false。还有原来的函数fancyFunc()被调用(输出奇特函数)而不是被嘲笑。


您可以更改导入样式,并将模块导入为对象,如下所示

import sinon from 'sinon'
import * as myModule from '../fancyModule'

describe('fancyModule', () => {
  it('calls fancyFunc', () => {
    const spy = sinon.spy(myModule, 'fancyFunc');
    myModule.fancyDefault()
    expect(spy.called).to.be.true
  })
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Sinon监视导入的函数? 的相关文章

随机推荐

  • 具有自定义字段名称的 RavenDB 查询索引

    我在 RavenDB 中收集了 Message 文档 定义 class Message string Content Tag Tags class Tag string Value 我有索引 from doc in docs Message
  • 如何使用循环将值添加到 VARRAY

    我有一个 VARRAY 我想通过使用循环向该 VARRAY 添加元素 这是我到目前为止所尝试过的 DECLARE TYPE code array IS VARRAY 26 OF VARCHAR2 6 codes code array BEG
  • WP8 + 将文件上传到 Skydrive

    我正在尝试将一个简单的 cer 文件上传到 SkyDrive 不管LiveConnectClient Method我用了 没有任何反应 没有编译 运行时或其他异常 我的应用程序从未收到LiveOperationResult 我正在使用模拟器
  • 如何显示 Jupyter 笔记本的版本并在 Jupyter 笔记本中运行单元?我收到错误:错误的解释器

    我已经安装了 Anaconda 并使用 conda 环境和 conda 命令来安装软件 当我输入 jupyter notebook version 我收到以下错误 zsh Users cr517 local bin jupyter bad
  • 如何基于Vuetify创建自己的组件库

    我想基于 Vuetify 创建我的组件库并在 npm 上发布 Vuetify 已经有 vue plugin 标准安装并使用 vuetify loader 我认为这是一个比纯 HTML 组件更复杂的场景 例如 我想创建我的登录表单 my 文章
  • 如何检测并突出显示鼠标悬停时的矩形

    我在 C net 中创建了一个 Windows 应用程序控件 以图形模式显示一些对象 为此 我根据列表中的项目数量创建了一个矩形 并使用 Control OnPaint 事件将其绘制在控件上 现在 如果鼠标悬停在该矩形上 我想突出显示该矩形
  • Kubernetes:无法创建存储库

    我正在跟进Kubernetes 入门指南 http kubernetes io docs hellonode 一切都很顺利 直到我跑步 gcloud docker push gcr io
  • 将文件转换为 Ascii 抛出异常

    后果我之前的问题 https stackoverflow com questions 31742609 how to strip the leading unciode characters from a file 31742694 nor
  • 如何设置 QTableView 中特定单元格的线条样式?

    我正在使用 QT GUI 我正在使用 QTableView 实现一个简单的十六进制编辑控件 我最初的想法是使用一个有十七列的表格 表的每一行都有 16 个十六进制字节 然后在第十七列中显示该数据的 ASCII 表示形式 理想情况下 我想编辑
  • YouTube Data API v3 没有资源的唯一 ID

    这让我很困惑 而且看起来有点可笑 当我在数据 API 上执行两个不同的查询时 以活动列表端点 https developers google com youtube v3 docs activities list作为概念证明 id请求之间的
  • 控制 n 个重叠区域的 alpha 混合/不透明度

    我很难理解 和控制 alpha 的混合 不幸的是 alpha 值并不是简单地 相加 0 5 0 5 不是 1 但我怎样才能做到这一点呢 目的是定义重叠区域相对于观测总数的 绝对 灰度值 请参见下面的示例 我尝试设置scale alpha r
  • 如何将表达式传递给ggplot中的geom_text标签? (继续)

    这是我的后续原问题 https stackoverflow com questions 63813557 how to pass an expression to a geom text label in ggplot了解如何将带下标的表达
  • 控制器对延迟作业的操作

    我正在上传一个制表符分隔的文档并在控制器中进行处理 一切正常 但处理大文件可能需要一些时间 我想将其移至delay job 我在应用程序的其他地方工作 但由于这是在控制器中 因此无法以相同的方式调用 该表单调用 process file 操
  • XSD 到 XForms 以及 XForms 到 XSD 转换

    目前我正在努力解决两个问题 我从外部服务器接收到一个 XSD 文件 并且基于该文件我必须生成 XForm 通常 XSD 文件会导入许多其他 XSD 文件等等 我正在使用 XForm 构建器编写 GUI 当用户构建他的自定义 XForm 时
  • Ember 组件在路由或控制器中调用操作

    我有一个组件 其主要目的是显示一行项目 每行都有一个删除按钮 可以删除一行 如何将操作从模板传递到将在路由器中触发操作的组件 这是使用该组件的模板 templates holiday hours hbs each model as holi
  • jquery mobile取消302重定向到外部站点

    我正在尝试将 DotNetOpenAuth 与使用 jquery mobile 的网站集成 我遇到了一个问题 jquery mobile 似乎正在取消到服务器响应的提供方 外部站点 的 302 重定向 我尝试在 mobileinit 事件中
  • 为什么弹性物品会包裹而不是收缩?

    我想知道是否有人可以给我一个关于如何计算 Flexbox 布局的简单介绍 特别是优先级顺序 例如 div style display flex div style height 200px background color lightgre
  • gcc 无效版本(最大)错误添加符号:错误值

    我已经在 Linux x86 x64 上成功构建了几个 32 位静态和共享库 现在我尝试将它们链接到一个可执行文件 但出现以下错误 usr bin ld foo so moddi3 invalid version 21 max 0 foo
  • 在 Mathematica 中创建具有不同颜色边的图形

    我想创建一个图 图论 其中某些边具有与其他边不同的颜色 这将用于突出显示图中从一个顶点到另一个顶点的路径 以下是一些具有不同颜色边缘的示例http demonstrations wolfram com AGraphTheoryInterpr
  • 如何使用Sinon监视导入的函数?

    假设我们想使用 Sinon 测试另一个函数是否调用了一个特定函数 fancyModule js export const fancyFunc gt console log fancyFunc export default const fan