jasmine-ts ReferenceError:未定义SVGGElement

时间:2017-09-11 16:42:33

标签: typescript jasmine

我正在使用jasmine-ts编写测试,并且我有许多不使用表示dom元素的类型的工作测试。

现在我已经编写了一个可以简化为以下内容的测试:

describe("A Test",
    () => {
        it("when an element is created then it is defined",
            () => {
                const element = new SVGGElement();
                expect(element).toBeDefined();
            }
        );
    }
);

使用jasmine-ts运行测试时,测试失败并出现以下错误:

  

消息:       ReferenceError:未定义SVGGElement Stack:       ReferenceError:未定义SVGGElement           在对象。 (C:\路径\ Test.spec.ts:50:37)

我看到SVGGElement都在

中声明
  • ... \ TypeScript \ 2.4 \ lib.es6.d.ts和
  • ... \打字稿\ 2.4 \ lib.dom.d.ts

使用tsc时全部编译,但此类型没有明确导入。可能这是因为tsconfig.json中的以下内容:

"compilerOptions": {
    "lib": [ "es6", "dom" ]
}

如何配置以便可以运行此测试?

2 个答案:

答案 0 :(得分:0)

  

ReferenceError:未定义SVGGElement

这是运行时错误。不是编译错误。您运行的环境不支持SVGGElement,例如nodejs

更多

设置在浏览器中运行。 Check the docs.

答案 1 :(得分:0)

有了巴士拉特提供的答案,我转而使用了Jest,因为它带有jsdom。

然而,运行测试我得到完全相同的错误。

似乎不支持尝试以这种方式使用构造函数构造元素。相反,我使用了以下代码:

const gElement = document.createElementNS("http://www.w3.org/2000/svg", "g") as SVGGElement;