【问题标题】:How do I run Jasmine in browser mode if my tests are written in Typescript?如果我的测试是用 Typescript 编写的,如何在浏览器模式下运行 Jasmine?
【发布时间】:2020-07-02 15:31:59
【问题描述】:

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

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

【问题讨论】:

    标签: node.js typescript jasmine ts-node


    【解决方案1】:

    如果 jasmine 是硬性要求,可以使用jsdom 在 node 中模拟浏览器环境。

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

    【讨论】:

    • 我不需要访问 Dom,我只需要一个可以设置和启动的空窗口对象。这是否给了我另一种方式来做到这一点?
    • JSDom 就是这个,查看文档
    • @DanielKaplan 然后global.window = {};
    猜你喜欢
    • 2018-07-12
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 2017-11-14
    • 2021-01-01
    • 2014-12-28
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多