首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chutzpah和Jasmin2.0和RequrieJs

Chutzpah和Jasmin2.0和RequrieJs
EN

Stack Overflow用户
提问于 2014-02-28 09:45:45
回答 2查看 2.9K关注 0票数 5

我遇到了一些麻烦,让Chutzpah使用requireJs/Jasmin2.0。这个方法适用于1.3版本,但现在对于Jasmin2.0版本来说,chutzpah已经停止了测试。我也将jasmin2.0支持的chutzpah升级到3.1.1。为了使其工作,我确实需要做一些小小的更改来从requireJs加载jasmine,但我认为这不应该影响chutzpah,因为它只是加载html。

这是我对chutzpah的命令。

代码语言:javascript
复制
chutzpah.console.exe path/to/SpecRunner.html

控制台现在无法接收测试。

代码语言:javascript
复制
=== 0 total, 0 failed, took 0.25 seconds ===

但是当我运行实际的html文件时,它会找到测试。

任何帮助都将不胜感激。

而不是HTML路径,我一直在尝试配置中内置的chutzpah

代码语言:javascript
复制
{
    "Framework": "jasmine",
    "TestHarnessReferenceMode": "AMD",
    "TestHarnessLocationMode": "SettingsFileAdjacent",
    "Tests": [
        {"Path" : "Specs/example.spec.js"}, 
    ],
    "References" : [
        {"Path" : "../../../Scripts/lib/require/require.js" }, 
        {"Path" : "../../../Scripts/app/app.js" }
    ]
}

不管怎么说,这都是个错误

代码语言:javascript
复制
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文件,如下所示

代码语言:javascript
复制
(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项得到解决时,这一问题将得到解决,如下所示。

代码语言:javascript
复制
{
    "Framework": "jasmine",
    "RootReferencePathMode": "SettingsFileDirectory",
    "TestHarnessReferenceMode": "AMD",
    "TestHarnessLocationMode": "SettingsFileAdjacent",
    "Tests": [
        { "Path" : "specrunner.html" }
    ],
    "References" : [
        {"Path" : "../../../Scripts/lib/require/require.js" }, 
        {"Path" : "../../../Scripts/app/app.js" }
    ]
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-02 05:36:46

我查看了你的代码,下面是我发现的

运行HTML

如果你做了几个小的改变,这就很好了。1. chutzpah.json文件中的测试设置有一个后缀逗号。这暴露了反序列化器将其作为空项返回的错误,chutzpah没有处理它。我会解决这个问题,但你可以删除额外的逗号。2.删除该命令后,我看到您的chutzpah.json文件有一个测试设置,它只列出了.js文件。但是当运行html文件时,这就是您的测试文件。所以你的chutzpah.json会过滤掉它。如果您将测试设置更新为指向html文件,则此操作有效。

一旦我做了这些更改,测试就成功运行了。

运行Chutzpah.json

通过在example.spec中加载SpecRunner的方式,您可以在require中引用.js扩展。这告诉require.js忽略baseurl并查看相对于当前位置的文件。当您有chutzpah生成测试工具时,它会生成一个没有扩展的请求调用。这意味着在给定当前基url设置的情况下,文件需要能够加载。

现在,在chutzpah中有一个bug,它不了解baseurls。见https://chutzpah.codeplex.com/workitem/214。计划中的解决方案是允许您告诉chutzpah.json文件中的chutzpah您的baseurl是什么。没有这一点,仍然可以让它工作,但是您需要告诉chutzpah将生成的.html文件放置在基url所指向的位置。

如果这有帮助的话请告诉我。

票数 6
EN

Stack Overflow用户

发布于 2015-04-04 03:25:17

我有一个类似的问题,在你的,没有一个测试是由胆小鬼。我发现,由于我使用的是require.js,所以从jasmine.js中删除了对jasmine.js的所有脚本引用。我一放回去

<!--<script src="jasmine.js"></script>-->

进入我的specRunner.html,一切正常。尽管脚本标记已经被注释掉了,而且路径甚至不正确,但这还是起了作用。我的猜测是,如果您没有配置Chutzpah.json,那么chutzpah将只扫描您要运行的文件,看看它是什么。如果它能够找到jasmine的脚本标记(即使它被注释掉了),它就知道它是一个jasmine运行程序,并执行一些特定于茉莉花的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22091500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档