编程语言
首页 > 编程语言> > javascript – Chutzpah和Jasmine 2.0和RequrieJs

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