4

我正在使用 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 的回答为我指出了问题的出路。

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

bin _PublishedWebsites src

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

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

4

2 回答 2

3

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

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

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

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

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

黑客 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" />

黑客 2

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

于 2014-01-23T09:23:13.823 回答
1

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

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

另外,您可能需要在构建定义的测试配置中启用“部署”,如此处所述

于 2014-01-22T10:41:32.293 回答