首页 > 解决方案 > 如果我的测试是用 Typescript 编写的,如何在浏览器模式下运行 Jasmine?

问题描述

我正在使用 Jasmine 对一些将在浏览器中运行的遗留代码进行单元测试。这是我执行测试的方式:ts-node node_modules/jasmine/bin/jasmine

因为这是遗留代码,所以它使用全局变量(即:)window。我如何执行 Jasmine 并告诉它应该假定代码处于浏览器模式而不是节点模式。也就是说,识别window为全局变量而global不是?

标签: node.jstypescriptjasminets-node

解决方案


如果 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 设置。


推荐阅读