javascript – Chutzpah和Jasmine 2.0和RequrieJs
作者:互联网
我有点麻烦让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,requirejs,jasmine,chutzpah 来源: https://codeday.me/bug/20190517/1120279.html