node.js - 如果我的测试是用 Typescript 编写的,如何在浏览器模式下运行 Jasmine?
问题描述
我正在使用 Jasmine 对一些将在浏览器中运行的遗留代码进行单元测试。这是我执行测试的方式:ts-node node_modules/jasmine/bin/jasmine
因为这是遗留代码,所以它使用全局变量(即:)window
。我如何执行 Jasmine 并告诉它应该假定代码处于浏览器模式而不是节点模式。也就是说,识别window
为全局变量而global
不是?
解决方案
如果 jasmine 是硬性要求,您可以使用jsdom在 node.js中模拟浏览器环境。
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
global.window = (new JSDOM()).window; // this will put window object on the node's global object.
如果不是硬性要求,请考虑使用 jest,它内置了整个 jsdom 设置。
推荐阅读
- laravel - 如何在 laravel 的导航栏列表中添加路由资源?
- python - 如何在 PyQt5 中为 QTableWidget 中的特定列创建动态自动完成器?
- javascript - 在每个标签上包含 HTML 的 JavaScript 拆分字符串
- python - 如何使用列表作为键和 int 作为值来创建字典?
- java - Photoshop 脚本 - 如何在 2 个链接图层组之间切换
- excel - Vlookup 重复状态
- java - Javamail 和 gmail,得到“PKIX 路径构建失败”
- mysql - MySQL - 带有 3 个表的 GROUP_CONCAT 的 LEFT JOIN - 未知列
- perl - 如何从 PERL 转储中追溯原始数据结构信息?
- java - Docx4J (Android):如何读取 Word 文档中页眉和页脚的内容