我正在使用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时,是否存在解决依赖关系的“标准方法”?
答案 0 :(得分:1)
从TypeScript调用JavaScript是完全有效的。
在你的情况下,你可以做两件事之一......
declare var $: any;
我推荐第二个选项,因为您将获得正确的编译器检查和自动完成。
你可以抓住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