如何在Mocha中使用console.log语句测试功能?

2024-01-08

假设我有一个函数:

function consoleOutput(param) {
  var newParam = param * param;  
  console.log(newParam);
}

我如何在 Mocha 中测试该函数是否正常工作(参数将乘以 2 并输出到控制台)。谢谢。


对于这些类型的测试来说,一个很棒的库是Sinon http://sinonjs.org/。它可用于“挂钩”现有函数并跟踪这些函数如何被调用。

例如:

const sinon  = require('sinon');
const assert = require('assert');

// the function to test
function consoleOutput(param) {
  var newParam = param * param;  
  console.log(newParam);
}

it('should log the correct value to console', () => {
  // "spy" on `console.log()`
  let spy = sinon.spy(console, 'log');

  // call the function that needs to be tested
  consoleOutput(5);

  // assert that it was called with the correct value
  assert(spy.calledWith(25));

  // restore the original function
  spy.restore();
});

这样做的优点是您不需要更改原始函数(在这种情况下,这不是什么大问题,但在较大的项目中可能并不总是可行)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Mocha中使用console.log语句测试功能? 的相关文章

随机推荐

  • 如何显示接口方法的所有实现实例?

    在我的项目中 使用了大量的接口类 我在阅读和理解代码时遇到困难 因为浏览代码的定义 通过选择方法名称并按 F12 或右键单击 转到定义 只会引导我进入界面 Visual Studio 2010 中是否有一种方法 内置或插件 可以列出接口方法
  • Vagrant:缺少文件 id_rsa

    我正在使用带有 homestead 的 Windows 并且尝试在命令行上输入 vagrant up 但出现此错误 C www Homestead scripts homestead rb 106 inread No such file o
  • 使用Qt4捕获多个屏幕桌面图像

    我正在用 C 在 Qt4 中编写屏幕捕获应用程序 我在双屏上调整时遇到问题 我无法使用第二个屏幕获取图像 我尝试了一个 C 应用程序 它将抓取一个图像中的所有桌面 我可以从那里提取每个屏幕桌面图像 这是c 代码 using System u
  • 链接 pthread 库问题

    我面临着一个解释和理解可能稍微复杂的问题 因为给出整个图片太大且困难 请原谅 考虑以下 Makefile all clients so simulator backup LD PRELOAD home Juggler client clie
  • Gradle 工具 api 获取任务输出

    借助 Gradle 工具 API 我成功获得了一些项目的任务列表GradleProject getTasks 这有点酷 我可以读取任务的名称 描述 组以及是否公开 我想知道是否有可能获得任务输出目录 特别是对于测试或代码覆盖率的内容 即生成
  • 服务器上的自动化 django 接收钩子:用“yes”响应collectstatic

    我正在使用 Github post recieve hook 来运行一个 bash 文件来提取我的两个存储库 bin sh cd public html repo static env i usr bin git pull origin m
  • 如何将 gradle 多项目存储库作为 git 子模块包含在另一个 gradle 项目中

    我正在尝试将 Gradle 多项目存储库作为 git 子模块导入到另一个 Gradle 项目中 这是多项目存储库的结构 MyLibrary lib api api config api repository lib impl impl co
  • Angular Dart 教程第 5 节 - 'self.injector$Injector'

    在 英雄之旅 教程的第 5 节中 main dart包含以下行 最终 InjectorFactory 注入器 self injector Injector 这是拼写错误吗 它在 VSCode 中向我发出警告 我遇到了同样的问题 因为它完成没
  • “存在(从...中选择 1)”这一做法从何而来?

    The 绝大多数人支持 https stackoverflow com questions 424212 performance of sql exists usage variants我个人认为以下说法没有区别 SELECT FROM t
  • MongoDB.service 失败,结果退出代码

    我无法使用命令 sudo systemctl start mongod 启动 mongoDB 我收到以下消息 mongod service MongoDB Database Server Loaded loaded lib systemd
  • Android 无尽列表内存管理

    我通过在 onScrollStateChanged 方法中将更多项目加载到数组列表来实现无限列表视图 如果我实现这个方案来获取超过 100 万个条目 我将向数组列表添加一百万个对象 这是内存密集型的 我可以使用哪些方案来实现高效的内存管理
  • 如何从用户控件调用方法到aspx页面?

    我想从用户控件调用一个方法到aspx页面 我正在尝试 但无法在 aspx 页面中调用该方法 Code 添加VisaUserControl ascx cs public event EventHandler UserControlButton
  • 顶级批处理模式下的 CPU 使用率

    我有一个让我生气的问题 我使用以下命令以批处理模式运行 top top b n 1 问题是我可以在批处理模式下运行 top 100 次 但 CPU 使用率永远不会超过原始值 内存使用量按预期变化 但 CPU 保持不变 如果我同时在不同的窗口
  • 使用 Transact-SQL 查找特定子字符串

    我需要从以下形式的字符串中提取特定的子字符串 foo abc bar def baz ghi 例如 我如何从该字符串中获取 bar 的值 您可以使用字符索引 http msdn microsoft com en us library ms1
  • 关系设计场景:限制子关系

    请考虑以下场景 宠物主人可能有多只猫 也可能有多只狗 有些狗与一些猫有亲缘关系 即它们打架 同一所有者的 以下关系设计不施加此限制 因为不同所有者的猫和狗可能是相关的 有没有办法通过关系设计来施加这种限制 您需要使用识别关系将所有者的 PK
  • 访问 C# 类中的变量是否会从内存中读取整个类?

    我对 C 很陌生 有一个问题困扰了我一段时间 当我学习 C 时 我被告知类不应包含大量变量 因为这样读取变量 或从中调用方法 会很慢 有人告诉我 当我访问 C 类中的变量时 它会从内存中读取整个类以读取变量数据 但这对我来说听起来很奇怪且错
  • 如何使用 7-Zip 从多个 zip 存档中删除文件

    我有一千个 zip 存档 其中都包含我要删除的文件 我可以让 7Zip 从命令行一次删除一个文件 7z d r archive zip pdf 但是我如何将其应用于所有文件 这些文件本身分组在子目录中 尝试这个 for r v in zip
  • Windows Powershell:如何比较两个 CSV 文件并输出仅在两个文件中但不在两个文件中的行

    我有一个文件第一个 csv name surname height city county state zipCode John Doe 120 jefferson Riverside NJ 8075 Jack Yan 220 Phila
  • 在 Eclipse 中使用 Firefox 而不是 IE

    在 Eclipse 中 是否可以使用 Firefox 作为 Eclipse 的内部 Web 浏览器而不是 Internet Explorer 我是一名在 Windows 中使用 Eclipse 的 Web 开发人员 Thanks 内部 We
  • 如何在Mocha中使用console.log语句测试功能?

    假设我有一个函数 function consoleOutput param var newParam param param console log newParam 我如何在 Mocha 中测试该函数是否正常工作 参数将乘以 2 并输出到