我有些麻烦让Chutzpah与requireJs/Jasmine 2.0一起使用。此方法适用于1.3版,但现在适用于 Jasmine 2.0版chutzpah已停止接受测试。我也将chutzpah升级到了3.1.1,以支持 Jasmine 2.0。我确实需要做一个很小的更改以从requireJs加载 Jasmine 才能使其正常工作,但我认为这不应该影响chutzpah,因为它只是加载了html。
这是我为chutzpah运行的命令。
chutzpah.console.exe path/to/SpecRunner.html
控制台现在无法进行测试
=== 0 total, 0 failed, took 0.25 seconds ===
但是,当我运行实际的html文件时,它会找到测试
任何帮助将不胜感激
除了尝试使用HTML路由之外,我还尝试了内置的chutzpah
{
"Framework": "jasmine",
"TestHarnessReferenceMode": "AMD",
"TestHarnessLocationMode": "SettingsFileAdjacent",
"Tests": [
{"Path" : "Specs/example.spec.js"},
],
"References" : [
{"Path" : "../../../Scripts/lib/require/require.js" },
{"Path" : "../../../Scripts/app/app.js" }
]
}
运行,但是出现错误
Error: Error: Script error for: specs/example.spec
Error: Timeout occured when executing test file
While Running:C:\path\to\specs\example.spec.js
System.AggregateException: One or more errors occurred.
---> System.NullReferenceException: Object reference not set to an instance of an object.
at Chutzpah.FileProbe.<FindScriptFiles>d__1a.MoveNext() in c:\Dev\chutzpah\Chutzpah\FileProbe.cs:line 159
此处的路径绝对正确,因为我已将其复制并粘贴到资源管理器窗口中以确保。
测试是一个简单的经过编译的coffeescript文件,看起来像这样
(function() {
define([], function() {
return describe('==== example test ====', function() {
return describe('the test should', function() {
return it('showcase toBe', function() {
return expect(true).toBe(true);
});
});
});
});
}).call(this);
而且我敢肯定,这是可行的,因为它正在基于我的基于html的浏览器中传递。
这是我可以使用html的最终配置。我不能让它仅与发现测试的配置一起使用。希望在解决项目214时能解决此问题,如以下答案所示
{
"Framework": "jasmine",
"RootReferencePathMode": "SettingsFileDirectory",
"TestHarnessReferenceMode": "AMD",
"TestHarnessLocationMode": "SettingsFileAdjacent",
"Tests": [
{ "Path" : "specrunner.html" }
],
"References" : [
{"Path" : "../../../Scripts/lib/require/require.js" },
{"Path" : "../../../Scripts/app/app.js" }
]
}
最佳答案
我调查了您的代码,这就是我发现的内容
运行HTML
如果您进行一些小的更改,则效果很好。
1. chutzpah.json文件中的测试设置以逗号结尾。这暴露了一个错误,在该错误中,反序列化器将其作为空条目返回,而chutzpah并未对其进行处理。我将解决此问题,但您可以删除多余的逗号。
2.删除该命令后,我发现您的chutzpah.json文件具有仅列出.js文件的测试设置。但是,当运行html文件时,那就是您的测试文件。因此,您的chutzpah.json已将其过滤掉。如果您将测试设置更新为指向html文件,则此方法有效。
一旦进行了这些更改,测试就成功运行了。
运行Chutzpah.json
考虑到在SpecRunner中加载example.spec的方式,您需要在require调用中引用.js扩展名。这告诉require.js忽略baseurl并查看相对于当前位置的文件。当您使用chutzpah生成测试工具时,它将生成一个没有扩展的require调用。这意味着在给定当前baseurl设置的情况下,需要能够加载文件。
现在chutzpah中有一个错误,它无法理解baseurls。参见https://chutzpah.codeplex.com/workitem/214。计划的解决方案是让您告诉chutzpah.json文件中的chutzpah您的baseurl是什么。没有它,仍然可以使它起作用,但是您需要告诉chutzpah将其生成的.html文件放在您的baseurl指向的位置。
让我知道是否有帮助。
关于javascript - Chutzpah和Jasmine 2.0和RequireJs,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22091500/