在TFS 2012中运行Jasmine的Chutzpah无法找到受测试的参考文件

时间:2014-01-22 10:27:00

标签: tfs jasmine tfs2012 chutzpah

我正在使用Chutzpah进行我们的Jasmine测试。 我已将Chutzpah dll添加到解决方案中并更新了构建以运行* .js测试。

项目结构如下:

MyApp.Web
    Scripts
        App
            Home 
                DateControl.js 
MyApp.Web.Tests 
    Scripts 
        Jasmine 
        lib
            Chutzpah (dlls) 
        Spec 
            App 
                Home 
                    DateControlSpecs.js

Jasmine测试文件使用引用标记来引用要测试的文件

/// <reference path="../../../../../../App.web/scripts/app/home/datecontrol.js" />

运行Jasmine测试然后我收到以下错误:

ReferenceError: Can't find variable: dateControl in file

dateControl是测试中的对象。 如果我将要测试的代码复制到Jasmine测试文件中,则测试通过。 使用Visual Studio 2013中的测试资源管理器中的Chutzpah测试适配器传递参考标记的jasmine测试。

我不知道为什么这不起作用。

更新

@ jessehouwing的回答指出了问题的路径。

构建服务器上的构建文件夹具有以下结构

仓     _PublishedWebsites SRC

将jasmine测试脚本和库复制到bin,而将测试中的脚本文件复制到src目录和_publishedwebsite目录。

我正在寻找一个易于管理的解决方案,以便任何未来的开发人员都不需要知道他们需要将任何新脚本链接到测试项目中。

2 个答案:

答案 0 :(得分:3)

我现在可以忍受的解决方案

对于茉莉花测试文件和测试中的文件,我根据Chutzpah文档在属性中添加了“Always copy”。我没有意识到被测试的文件实际上是与茉莉花测试文件一起被复制到builds bin文件夹中。 所以在构建服务器上我最终得到了以下结构

bin
    scripts
        app
            * application js files
        specs
            * jasmine test files

在我的jasmine测试文件中,我添加了两个引用:

  • 第一个到要测试的文件的Visual Studio目录结构
  • 构建bin文件夹结构的第二个

Hack 1

我可以通过添加对我的jasmine测试文件的另一个引用来使用它,该文件使用构建目录的结构而不是解决方案目录结构,但是由于路径可能输入不正确,因此可能会出错。

下面的第二个参考将允许测试在VS Test Explorer和TFS Build

中运行
/// <reference path="../../../../../../App.Web/scripts/app/home/datecontrol.js" />
/// <reference path="../../../../../_PublishedWebsites\App.Web/scripts/app/home/datecontrol.js" />

Hack 2

通过向项目的构建后构建事件添加xcopy命令,我可以将要测试的文件复制到与jasmine测试文件相同的位置。

答案 1 :(得分:1)

这很可能是因为Team Build分离了Sources和Binaries文件夹,并在Binaries文件夹中强制执行不同的输出结构。这意味着您的文件不在您期望的位置。

为确保测试运行器始终可以找到您的引用,您必须使用Visual Studio中的“添加为链接”选项,并将其构建操作设置为“始终复制”,以便在测试执行时将它们复制到测试目录中。

另外,您可能需要enable "Deployment" in the Test configuration in your Build Definition, as outlined here