使用 Jasmine 的 TypeScript 中的 AngularJS 单元测试未运行

标签 angularjs unit-testing visual-studio-2013 typescript jasmine

我在 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/

相关文章:

java - 如何对Spring AOP建议的应用进行单元测试是否符合预期?

java - 由于 java.lang.NoClassDefFoundError : jdk/internal/reflect/GeneratedSerializationConstructorAccessor1 无法运行 gradle 测试任务

visual-studio - NuGet软件包还原IS已启用,但我收到一条错误消息,指出未启用

c++ - Blitz 在 vs 2013 中不起作用

javascript - ui-router onEnter "TypeError: Cannot read property ' globals' of null"

Angularjs:在 $http 拦截器中发出另一个 $http 请求

javascript - 如何从当前导航器系列的 Highcharts 中获取摘要?

node.js - 'FIRESTORE 内部断言失败 : Unexpected state' when unit testing with Jest

c++ - 使用 Visual Studio-commander 配置 Qt 4.7.3 失败(返回 #2)

javascript - 如何在 Angular JS 中验证状态