在 Javascript 中模拟 window.location.href

2024-03-06

我对一个使用 window.location.href 的函数进行了一些单元测试——这并不理想,我宁愿将其传递进去,但在实现中这是不可能的。我只是想知道是否可以模拟这个值而不实际导致我的测试运行器页面实际转到该 URL。

  window.location.href = "http://www.website.com?varName=foo";    
  expect(actions.paramToVar(test_Data)).toEqual("bar"); 

我使用 jasmine 作为我的单元测试框架。


最好的方法是在某处创建一个辅助函数,然后模拟它:

 var mynamespace = mynamespace || {};
    mynamespace.util = (function() {
      function getWindowLocationHRef() {
          return window.location.href;
      }
      return { 
        getWindowLocationHRef: getWindowLocationHRef
      }
    })();

现在,不必在代码中直接使用 window.location.href,只需使用它即可。然后,每当您需要返回模拟值时,您都可以替换此方法:

mynamespace.util.getWindowLocationHRef = function() {
  return "http://mockhost/mockingpath" 
};

如果您想要窗口位置的特定部分(例如查询字符串参数),那么也为此创建帮助器方法,并将解析排除在主代码之外。一些框架(例如 jasmine)具有测试间谍,它们不仅可以模拟函数以返回所需的值,还可以验证它是否被调用:

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

在 Javascript 中模拟 window.location.href 的相关文章

随机推荐

  • 在高资源需求 pod 上,节点状态更改为未知

    我有一个 Jenkins 部署管道 其中涉及 kubernetes 插件 使用 kubernetes 插件 我创建了一个从属 Pod 用于使用以下命令构建节点应用程序 yarn 设置 CPU 和内存的请求和限制 当 Jenkins mast
  • Spring Data DTO 投影

    我们希望在接口一上使用 DTO 投影 因此我们创建了以下 DTO 对象 人员Dto Data Builder AllArgsConstructor public class PersonDto private String name pri
  • 我可以使用 AccountManager 让用户使用其 Google 帐户登录吗?

    我正在创建一个需要用户创建帐户的应用程序 就像 Facebook 或 Twitter 会要求你这样做 但是 由于它是 Android 应用程序 我应该 可以让他们使用 AccountManager 或其他服务登录 Google 帐户吗 如果
  • Eclipse 3.5+:从用户主目录中自动创建的 .eclipse 目录加载插件

    我已经为我的 Linux 机器下载了最新的 Eclipse 3 6 并以 root 身份将 tar gz 解压缩到 opt eclipse 目录 我以普通用户的身份启动了Eclipse 并通过Eclipse成功安装了一些插件 这些插件在 E
  • 是否可以保存经过训练的层以在 Keras 上使用层?

    我没用过Keras 正在考虑要不要用 我想保存经过训练的图层以供以后使用 例如 我训练一个模型 然后 我获得一个经过训练的层t layer 我有另一个模型要训练 其中包括layer1 layer2 layer3 我想用t layer as
  • 如何从HTML文档中获取IMG标签代码?

    我如何得到img文本中的代码 现在 如果标签如下所示 我将获得代码和 URL text text img src image gif 但如果代码是 img src image gif target blank 然后我得到 URL image
  • 计算从 A 到 B 的动画

    我正在更新一个numeric value里面一个element通过间隔做ajax requests 为了让整个事情更加生动 我想从current的价值new一 部分地内或减少 the value超过一段时间n sec 所以基本上是这样的 d
  • 有没有办法在 MSAL.js 中查找身份验证是否遵循 MSA 还是 Azure AD

    我尝试使用此处提供的代码 https github com Azure Samples active directory javascript singlepageapp dotnet webapi v2 https github com
  • 使用 Mercurial,如果经常提交中间状态,如何与固定修订版进行比较?

    使用 Mercurial 假设我做了一个hg pull and hg up现在本地存储库和工作目录都是最新的 如果我经常提交 比如 1 天后 然后 2 天后 并且想要与现在的修订版本进行比较 该怎么办 否则 差异始终与先前提交的版本进行比较
  • 将 ruby​​ 数组转换为连续对数组

    将 ruby 数组转换为连续元素对的数组的最简单方法是什么 I mean x a b c d 预期结果 y gt a b c d Use Enumerable each slice http ruby doc org core 2 0 0
  • 使用VBA从网站上的表格中检索标签并放入Excel中

    我正在尝试从以下位置检索信息 td 网站上的标签 它有效 但我似乎无法从第二个中获取文本 td 标签在一个 tr 标签 同时使用条件语句来获取第二个标签 因为这是我认为有效的唯一方法 该代码可以很好地提取信息 我只是不知道如何在我在第一个中
  • TypeScript - 将布尔值作为 void 函数返回的函数

    如示例中所示 如果我有一个 void 函数的类型定义 则返回布尔值的函数将通过该类型检查 这是一个错误还是有正当理由 有解决方法吗 type ReturnsVoid gt void type ReturnsNumber gt number
  • Keras Convolution2D 输入:检查模型输入时出错:预期 volution2d_input_1 具有形状

    我正在努力通过这个很棒的教程 https blog keras io building powerful image classification models using very little data html关于使用 Keras 创
  • Python-用另一个单词替换单词[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有 12 个单元格的 html 表格 每个单元格都有一个要替换的单词 所有的词都是相同的 我还有一个包含 12 个元素的列表 每个元
  • 如何在 C# WEB API 中返回 JSON Web 令牌?

    我正在尝试使用 JWT 来保护用 C 编写的 WEB API 但我对一些事情感到困惑 根据我的理解 流程应该是这样的 客户端从某些客户端应用程序 Angular NET Mobile 等 向 Web API 提供用户名 密码 Web API
  • 哪种传感器适合旋转 Android 手机?

    想象一下你指着电视 您手里紧握着手机 现在 旋转手腕 我需要使用哪个传感器来检测这样的运动 陀螺仪 方向 加速度计 传感器TYPE MAGNETIC FIELD and TYPE ACCELEROMETER可以很好地检测到这一点 如TYPE
  • PySide:QPushButton 按下后保持突出显示

    在我的工具中 当用户按下按钮时 会创建一个弹出窗口 我的问题是 用户按下打开窗口的按钮在弹出窗口创建时保持突出显示 就像我将鼠标悬停在它上面一样 并且即使在弹出窗口被删除后仍然保持这种状态 我实际上喜欢弹出窗口处于活动状态时的此突出显示 它
  • 相当于 ASP.NET 中的 ASP.NET MVC TempData

    在 ASP NET MVC 中 有一个 TempData 可以将数据一次从一个页面传递到另一页面 在 ASP NET 中这相当于什么 没有直接的等效项 即仅传递到下一页的数据 您可以使用Session并在接收页面将其清除
  • 保存/提交时重新加载 jqGrid

    我有以下代码可以在双击时进入内联编辑 ondblClickRow function row id if row id null Products jqGrid restoreRow last selected row Products jq
  • 在 Javascript 中模拟 window.location.href

    我对一个使用 window location href 的函数进行了一些单元测试 这并不理想 我宁愿将其传递进去 但在实现中这是不可能的 我只是想知道是否可以模拟这个值而不实际导致我的测试运行器页面实际转到该 URL window loca