【问题标题】:How do you use a Typescript Unit Test to test Typescript in Visual Studio?如何使用 Typescript 单元测试在 Visual Studio 中测试 Typescript?
【发布时间】:2015-07-15 20:01:11
【问题描述】:

我正在尝试在 Typescript 中编写一个单元测试来测试一个 Typescript 类,但是当测试运行时,它对这个类一无所知。

我将 Typescript (1.4) 与 Node Tools for Visual Studio (2013) 一起使用,并且测试有用地出现在测试资源管理器中。运行时失败并显示“参考错误:未定义 ClassC。”

我正在测试的课程:

class ClassC {
    functionF() {
        return 42;
    }
}

生成的 Javascript:

var ClassC = (function () {
    function ClassC() {
    }
    ClassC.prototype.functionF = function () {
        return 42;
    };
    return ClassC;
})();
//# sourceMappingURL=ClassC.js.map

测试(从模板 Add -> new Item... -> TypeScript UnitTest 文件创建):

/// <reference path="ClassC.ts" />

import assert = require('assert');

export function classCTest() {
    var foo: ClassC = new ClassC();

    var result: number = foo.functionF();
    assert.equal(result, 42);
}

生成的 Javascript:

var assert = require('assert');
function classCTest() {
    var foo = new ClassC();
    var result = foo.functionF();
    assert.equal(result, 42);
}
exports.classCTest = classCTest;
//# sourceMappingURL=ClassC_tests.js.map

查看为测试生成的 Javascript 时,错误发生的原因就很明显了。它不包含ClassC 的必要定义。我认为包括参考路径会有所帮助,但显然没有。

如何让单元测试了解该类?

【问题讨论】:

  • 导入ClassC 就像你做断言类...而不是使用///&lt;reference... 注释。这样,它将在您运行测试时被导入。

标签: visual-studio unit-testing typescript


【解决方案1】:

我认为包含参考路径会有所帮助,但显然没有。

export class ClassC 然后使用import 语句而不是reference 注释。同时使用编译器标志--module commonjs进行编译。

更多:https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1http://basarat.gitbooks.io/typescript/content/docs/project/external-modules.html

【讨论】:

  • 谢谢,这行得通,但给我带来了另一个问题。如何在不将所有内容都变成自己的外部模块的情况下测试项目的各个部分?
猜你喜欢
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 2017-08-18
  • 2018-07-06
  • 2015-11-12
  • 2021-04-09
  • 2021-07-23
  • 2017-02-09
相关资源
最近更新 更多