我在 Visual Studio 2013 的 Web 应用程序中将 AngularJS 与 TypeScript 结合使用。我可以很好地在 JavaScript 中运行测试,但无法运行用 TypeScript 编写的测试。事实上,对于用 TypeScript 编写的每个测试,ReSharper Test Runner 都显示“测试未运行”状态,我不知道为什么。当我阅读有关此主题的博客时,它们准确描述了我的工作。
我的单元测试代码是:
/// <reference path="../typings/jasmine/jasmine.d.ts" />
/// <reference path="../AngularApp/Models/Member.ts" />
/// <reference path="../AngularApp/Models/Contract.ts" />
describe("Member", () => {
"use strict";
var contracts = new Array<App.Controllers.Contract>();
var sut = new App.Controllers.Member("Elvis", "Presley", "350108-11.2222",
new Date("1935-01-08"), new Date("1977-08-16"), "M", "Home", "", "90210", "Graceland",
contracts);
it("must not be null", () => {
expect(sut).not.toBeNull();
});
it("must contain zero Contracts", () => {
expect(sut.contracts).not.toBeNull();
expect(sut.contracts.length).toBe(0);
});
});
什么会导致这个问题?
最佳答案
你不能直接运行用 typescript 编写的测试,它们需要先转译成 js。由于您使用的是 visual studio,我想您的 ts 文件是在保存时编译的,因此您需要检查测试配置文件(例如 Karma.conf.js)以查看它是否在正确的目录中寻找测试。如果你想调试你的 ts 测试文件,你在 visual studio 中的测试运行器必须支持源映射。看看这个 Vs2013 的测试运行程序:https://github.com/MortenHoustonLudvigsen/KarmaTestAdapter .它支持源映射。
关于使用 Jasmine 的 TypeScript 中的 AngularJS 单元测试未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31067952/