我正在使用 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 测试文件中,我添加了两个引用:
黑客 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/