如何在单元测试期间验证某个 javascript 函数已被调用

2024-07-01

我正在使用 JsTestDriver 和一些 Jack(仅在需要时)。有谁知道如何验证单元测试期间是否已调用 JavaScript 函数?

E.g.

function MainFunction()
{
    var someElement = ''; // or = some other type
    anotherFunction(someElement);
}

并在测试代码中:

Test.prototype.test_mainFunction()
{
    MainFunction();
    // TODO how to verify anotherFunction(someElement) (and its logic) has been called?
}

Thanks.


JavaScript 是一种非常强大的语言,您可以在运行时更改行为。
您可以在测试期间将 anotherFunction 替换为您自己的函数并验证它是否已被调用:

Test.prototype.test_mainFunction()
{   
    // Arrange 
    var hasBeenCalled = false;
    var old = anotherFunction;
    anotherFunction = function() {
       old();
       hasBeenCalled = true;
    };

    // Act
    MainFunction();

    // Assert (with JsUnit)
    assertEquals("Should be called", true, hasBeenCalled);

    // TearDown
    anotherFunction = old;
}

The note:您应该注意,此测试会修改全局函数,如果失败,则可能无法始终恢复它。
你可能最好选择JsMock http://jsmock.sourceforge.net/examples/为了那个原因。
但为了使用它,你需要将函数分开并将它们放入对象中,所以你不会有任何全局数据 at all.

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

如何在单元测试期间验证某个 javascript 函数已被调用 的相关文章

随机推荐

  • 使用 Hugo 资产捆绑的 blogdown 帖子的 RSS 提要中的相关链接已损坏

    TLDR Hugo 页面包内的资源 例如图像 链接不是由 blogdown knitr 相对于博客根目录呈现的 而是相对于博客文章根目录生成的 这在浏览器中有效 但在 RSS 提要阅读器中会中断 之前曾提出过与 blogdown hugo
  • 优先级队列和堆

    我正在尝试根据文档中提供的示例实现优先级队列 文件 优先队列 http golang org pkg container heap example 简而言之 它看起来像这样 不包括所有内容 package pq type Item stru
  • 从作为字符串传递的值获取数据类型

    我正在编写一个框架 它将连接到许多不同的数据源类型并从这些源返回值 最简单的是 SQL Access 和 Oracle 比较难的是Sharepoint CSV 如果我从基于文本的源返回值 我想确定数据的数据类型 由于 CSV 都是文本 因此
  • 有效地将大向量分成向量向量

    我想将一个大向量分成一个向量向量 我知道关于chunks 但不确定从迭代器到 2D 的最佳方法Vec 我发现以下内容可以工作 但是有更好的方法来编写它吗 let v Vec
  • 如何在 Qt 中设置应用程序范围的代理设置?

    我之前曾发布过有关让 Google 地图显示在 WebView 中的努力 我发现我需要安装 OpenSSL 以便 HTTPS 可以用于某些 Google API 这一切都很好 但现在在另一台机器上我无法配置 Qt 使用系统代理 对于这一点
  • 了解 F# 3.0 中受保护/基本成员用法的更改

    F 3 0 添加了更严格的调用检查base and protected成员 我在 C 中有类似下面的抽象类protected static派生类使用的辅助方法 public abstract class Processor public a
  • QDockWidget tabify/splitDockWidget 奇怪的行为/错误?

    我有一个带有 MdiChilds 的应用程序 它应该包含多个 QDockWidgets 然而 我在拆分 选项卡窗口小部件以便它们生成所需的默认布局时遇到了麻烦 我基本上想要这样的布局 小部件 4 是最后创建的 需要位于选项卡式小部件 2 和
  • 如何更改 UWP 中 ListBoxItem 的选择突出显示颜色?

    I want to change the selection highlight color of a ListBoxItem 左侧的分割视图窗格有一个包含 ListBoxItems 的 ListBox 默认选择颜色是蓝色 我想自定义它 但
  • 组织 Objective-C/XCode 的 #import 语句

    经过几个月的 Objective C 编码后 我完全明白什么时候我需要一个 import 导入语句如何级联 波纹 以及何时使用转发类 我do not知道如何聚合导入以将它们放入 lt gt 而不是用引号引起来 尽管这可能仅适用于框架 问题是
  • 使用 Django + nginx 通过字节范围请求流式传输音乐

    我正在使用 Django nginx 构建一个音乐播放器应用程序 为此我需要一个支持字节范围请求的后端 Django 正在正确验证媒体文件 但 django 开发服务器不支持范围请求 206 部分响应 Nginx 使用后直接服务字节范围请求
  • Android WebView 删除特定域中的 cookie

    如何从特定域的 WebView 中删除 cookie 当我想删除所有cookie时就像这个方法一样 android webkit CookieManager getInstance removeAllCookie 具体来说 我想删除所有 f
  • 如何从 Skyscanner API post 请求检索会话密钥 - Ruby

    在我的应用程序中 我想按我使用过的航班详细信息获取实时价格天空扫描仪 API http business skyscanner net portal en GB Documentation FlightsLivePricingList 我在
  • 在 ASP.NET 兼容模式下运行的 WCF 服务中 HttpContext 为 null

    我有一个托管 WCF 服务的 asp net 网站 然后从桌面应用程序访问该服务 在我的服务中 在 UserNamePasswordValidator 类的实现中执行 Validate 方法期间 HttpContext 始终为 null 我
  • 当前一个 ajax 调用完成时,进行多个 ajax 调用

    我有这些ajax调用 需要在前一个ajax成功时调用 这意味着一旦第一个ajax正常 调用第二个ajax 一旦第二个ajax正常 调用第三个ajax 依此类推 我一开始进行了一些 ajax 调用 所以像下面这样将它们链接起来很好 但现在我有
  • 如何从 HttpPostedFile 创建字节数组

    我正在使用具有 FromBinary 方法的图像组件 想知道如何将输入流转换为字节数组 HttpPostedFile file context Request Files 0 byte buffer new byte file Conten
  • ViewPager SetCurrentItem点击后不设置位置

    我在用着触摸图像视图 https github com MikeOrtiz TouchImageView以全屏加载图像并具有缩放 捏合功能 这些图像是通过 Web 服务从 URL 中提取的 响应采用 JSON 格式 在这一部分 我使用 Vo
  • 在 ruby​​ 中一次读取文件 N 行

    我有一个大文件 数百兆 其中包含文件名 每行一个 我需要循环遍历文件名列表 并为每个文件名分叉一个进程 我一次最多需要 8 个分叉进程 并且不想一次将整个文件名列表读入 RAM 我什至不知道从哪里开始 有人可以帮助我吗 File forea
  • 为什么 GCC 在获取 void 表达式的地址时开始发出警告?

    在几个 GCC 版本之前 我可以做这样的巧妙的事情 objcopy I binary O elf64 x86 64 B i386 foo png foo png o 加上以下 C 语言 作为 SDL 图像加载的示例 extern void
  • HAL_SetDate 将年份设置为错误值

    我将 STM32F030RCT6 与 CubeMX 一起使用 设备是一个数据记录器 RTC 是不能失败的主要部分 在勘误表 http www st com resource en errata sheet dm00091791 pdf有一些
  • 如何在单元测试期间验证某个 javascript 函数已被调用

    我正在使用 JsTestDriver 和一些 Jack 仅在需要时 有谁知道如何验证单元测试期间是否已调用 JavaScript 函数 E g function MainFunction var someElement or some ot