我有些麻烦让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/

10-09 20:11