如何在Typescript单元测试中模拟DOM?

时间:2017-08-08 09:28:16

标签: unit-testing dom mocha chai typescript2.0

我在TypeScript 2.4.2中为使用相同语言编写的库编写了一些单元测试。 某些测试用例需要访问document.location.href等属性,因此我需要模拟DOM。 测试运行器是Mocha,断言框架是Chai。

1 个答案:

答案 0 :(得分:1)

好吧,经过几个小时的头痛和SO上的帖子后,我终于找到了办法:

  1. 安装jsdom-globaljsdom模块:npm install --save-dev jsdom jsdom-global
  2. 例如,创建一个名为dom-mock.js的文件。
  3. 在此文件中,添加以下内容:
  4. require('jsdom-global')(/* any html you need */, {
        /* any jsdom options you need, e.g: */
        url: "https://example.org/",
        referrer: "https://example.com/"
    });

    1. 通过注册刚创建的dom mock来运行测试:mocha -r tests/mocks/dom-mock.js -r ts-node/register tests/*.ts
    2. 如果您不需要DOM自定义,请运行mocha -r jsdom-global/register -r ts-node/register tests/*.ts