TypeScript + Chutzpah + Jasmine - 如何在单元测试中包含依赖项?

时间:2014-10-24 08:02:01

标签: visual-studio-2013 typescript jasmine chutzpah

我正在使用Chutzpah测试运行器和Jasmine库运行Visual Studio 13。我想测试一个依赖于类B的类A.类A也依赖于JQuery,所以我的代码看起来像这样:

/// <reference path="../typings/jquery/jquery.d.ts"/>
/// <reference path="../B.ts"/>

describe("A", () => {
    it("can be instaniated", () => {
        var instance = new A();
    });
});

但是当我运行测试运行器时,我遇到错误:错误:ReferenceError:找不到变量:$ 所以看起来测试运行器无法解析输入包含对于JQuery?

我尝试添加以下代码:

/// <reference path="../jquery-2.1.1.js"/>

然后编译器抱怨只有“.ts”文件才有效?!那我在这里错过了什么?我认为将JS文件包含在TS文件中是可以的吗?为什么我需要在Jasmine测试中使用-blocks而不是应用程序中的任何其他地方(编译器自动解析依赖项)?

在TypeScript中运行Chutzpah + Jasmine时,是否存在解决依赖关系的“标​​准方法”?

3 个答案:

答案 0 :(得分:1)

从TypeScript调用JavaScript是完全有效的。

在你的情况下,你可以做两件事之一......

  1. 添加declare var $: any;
  2. Download the definition for jQuery from Definitely Typed
  3. 我推荐第二个选项,因为您将获得正确的编译器检查和自动完成。

    你可以抓住Definitely Typed definition using NuGet,这会让它变得非常简单。

    此外,您需要记住在运行时包含实际脚本(并且以正确的顺序,即下面的脚本标记需要在您尝试使用jQuery之前出现)...

    <script src="jquery.js"></script>
    <script src="a-script-that-depends-on-jquery.js"></script>
    

    引用注释纯粹是一个设计/编译时工具,并不确保在程序运行时加载这些脚本。

答案 1 :(得分:1)

标准解决方案是使用Chuzpah附带的chutzpah.json-config,现在dependecies的工作就像一个魅力! https://chutzpah.codeplex.com/wikipage?title=Chutzpah.json%20Settings%20File

答案 2 :(得分:0)

你可以在这里使用chutzpah_reference而不是引用吗?

  

备用参考语法

     

TypeScript编译器也使用参考语法   引用文件。这可能会导致一个问题,因为Chutzpah期待你   引用您的实现文件和TypeScript除外   引用你的定义文件。要缓解此问题,您可以使用   Chutzpah特定版本的参考命令:

/// <chutzpah_reference path="someDependency.js" />
  

这与其他语法的工作原理相同,但TypeScript(和   VS)会忽略它。

来自https://chutzpah.codeplex.com/wikipage?title=Chutzpah%20File%20References