tfs - Chutzpah 在 TFS 2012 中运行 Jasmine 找不到被测试的引用文件

标签 tfs jasmine 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 测试文件中,则测试通过。
jasmine 使用 Visual Studio 2013 中的测试资源管理器中的 Chutzpah 测试适配器通过引用标记进行测试。

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

更新

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

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

垃圾桶
_已发布的网站
源文件

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

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

最佳答案

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

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

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

在我的 jasmine 测试文件中,我添加了两个引用:
  • 第一个到Visual Studio目录结构的待测文件
  • 第二个到build 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 测试文件相同的位置。

    关于tfs - Chutzpah 在 TFS 2012 中运行 Jasmine 找不到被测试的引用文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21280255/

    相关文章:

    git - 在 Visual Studio 中执行 GIT PULL 时如何正确处理 merge

    调用批处理文件时TFS构建部分成功,但日志中没有错误

    jasmine - 在 VueJS : Unknown custom element: <router-link> 中运行测试时出错

    jenkins - 倾城:Jenkins 插件无法生成报告

    javascript - 在 init() 函数中调用 $timeout 时对 Controller 进行单元测试

    tfs - DevOps 服务器 2019.0.1(Azure DevOps 错误 - TF30063 : You are not authorized to access tfs.)

    c# - 使用 TFS 和 Git 管理同一个项目

    javascript - 在 Jasmine 2.0 中测试 AngularJS promise

    requirejs - chutzpah 是否支持 requirejs 垫片/配置?

    Javascript 测试 : Inconsistent number of tests