如何在 Visual Studio 中调试 TypeScript 单元测试?

How to debug TypeScript unit tests in Visual Studio?

我正在命令行 NodeJS 项目中使用 TypeScript,解决 Advent of Code 问题。第 2 天,我开始于:

day2.ts

export function* lineToNumbers(line: string): Iterable<number> {
    console.log(`line = "${line}"`);
    const parts = line.trim().split(/[Sa-b]\s+/);
    for (const part of parts) {
        yield Number(part);
    }
}

还有一个 Mocha 单元测试:

day2-test.ts

import * as day2 from "./day2";

describe("day2.lineToNumbers()", () => {
    it("empty or whitespace string returns empty arrayS", () => {
        assert.equal(Array.from(day2.lineToNumbers("")), []);
        assert.equal(Array.from(day2.lineToNumbers("   ")), []);
    });
});

当我 运行 主程序时,调试器会在 TS 源代码中命中断点,但当我尝试调试(失败的)单元测试时,断点不会命中。我猜单元测试 运行ner 只是直接执行生成的 .js 文件,并没有正确处理源映射。

有没有办法让 Visual Studio 让我正确调试全 TS 项目?

为了调试单元测试并让断点被命中,我们需要选择Debug Selected Test

或者右键单元测试文件设置为Node.js启动文件:正常调试(按F5)

更新:

最新的VS版本确实存在这个问题,我们已经将这个问题反馈给产品团队:

https://developercommunity.visualstudio.com/content/problem/184931/vs2017-1554-debugging-typescript-unit-test-the-bre.html

如果可能的话,您可以在上面的报告中添加您的评论并投票。