【问题标题】:Chutzpah, Error: Called start() while test already started running, when I "Run JS Tests" on a simple html fileChutzpah,错误:在测试已经开始运行时调用 start(),当我在一个简单的 html 文件上“运行 JS 测试”时
【发布时间】:2017-05-18 11:49:53
【问题描述】:

我已经安装了 2 个 Chutzpah Visual Studio 插件(使用 VS 2015)、上下文菜单和测试资源管理器扩展。我可以右键单击 test.js 文件,它运行成功。我可以从测试资源管理器运行测试并且测试运行成功。问题是当我右键单击 test.html 文件时,出现以下错误。

错误:错误:在测试已经开始运行时调用 start() 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 开始(第 2679 行) 在 startQUnit(第 12 行) 在 onPageLoaded(第 16 行) (第 18 行) 运行时:C:\Users\byron\documents\visual studio 2015\Projects\WebApplication1\WebApplication1\Tests\codeSample\test.html ------ 测试开始:文件:C:\Users\byron\documents\visual studio 2015\Projects\WebApplication1\WebApplication1\Tests\codeSample\test.html ------ 错误:TypeError:未定义不是对象(评估'QUnit.jsDump.multiline = false') 登录时未定义(第 88 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 中的 runLoggingCallbacks(第 1036 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 中的 logAssertion (第 1701 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 中的 pushResult(第 1672 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 中的 pushFailure(第 1685 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 中运行(第 1430 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js (第 1620 行) 提前在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js (第 1105 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 开始(第 2796 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js (第 2756 行) 运行时:C:\Users\byron\documents\visual studio 2015\Projects\WebApplication1\WebApplication1\Tests\codeSample\test.html 错误:TypeError:未定义不是对象(评估'QUnit.jsDump.multiline = false') 登录时未定义(第 88 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 中的 runLoggingCallbacks(第 1036 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 中的 logAssertion (第 1701 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 中的 pushResult(第 1672 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 中的 pushFailure(第 1685 行) 在文件中的 pushFailure:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第 1822 行) 在 file:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js 中的 onError (第 2560 行) 在文件中出现错误:///C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第 3844 行) 运行时:C:\Users\byron\documents\visual studio 2015\Projects\WebApplication1\WebApplication1\Tests\codeSample\test.html 错误:执行测试文件时发生超时 运行时:C:\Users\byron\documents\visual studio 2015\Projects\WebApplication1\WebApplication1\Tests\codeSample\test.html ========== 总测试:0 次通过,0 次失败,0 次 ==========

我已经使用 Chutzpah 示例文件进行测试,并添加了一个测试来测试 JQuery 是否正常工作,这里是文件和 Chutzpah.json 文件。

test.html

    <html>
<head>
    <link rel="stylesheet" href="../Framework/qunit-2.3.2.css" type="text/css" />

    <script type="text/javascript" src="../Framework/jquery-3.1.1.js"></script>
    <script type="text/javascript" src="../Framework/qunit-2.3.2.js"></script>
    <script type="text/javascript" src="code.js"></script>
    <script type="text/javascript" src="test.js"></script>
</head>
<body>
<h1 id="qunit-header">Unit Tests</h1>
<h2 id="qunit-banner"></h2>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests">
</ol>
<div id="qunit-fixture">test markup, will be hidden</div>
</body>
</html>

test.js

/// <reference path="code.js"/>

QUnit.module("test");

$(document).ready(function() {
    QUnit.test("will add 5 to number",
        function() {
            var res = mathLib.add5(10);

            QUnit.assert.equal(res, 15, "should add 5");
        });

QUnit.test("test jquery",
    function() {
        var result = $("#qunit-fixture");
        QUnit.assert.ok(result.length > 0);
    });
});

code.js

var mathLib = {
    add5: function (a) {
        return a + 5;
    }
}

Chutzpah.json

{
  "RootReferencePathMode": "SettingsFileDirectory",
  "References": [
    { "Path": "Framework" }
  ]  
}

我的项目文件夹结构:

  • WebApplication1(项目)
    • 样板 MVC 文件夹
    • 测试
    • 代码示例
      • code.js
      • test.html
      • test.js
    • 框架
      • jquery-3.1.1.js
      • qunit-2.3.2.css
      • qunit-2.3.2.js

最终,我需要更新 250 个 JS 测试才能从 Visual Studio 中运行所有这些测试。目前,所有测试都只能通过脚本在 TeamCity 中运行。

【问题讨论】:

    标签: javascript chutzpah


    【解决方案1】:

    当直接在 JS 文件上运行时,Chutzpah 效果最好。虽然 Chutzpah 确实可以根据您的设置处理 HTML 文件,但您可能需要做更多的工作。在此示例中,由于您的测试已打包等待文档准备就绪,因此我的猜测是 QUnit 在您的测试注册之前开始运行。

    你应该让 Chutzpah 为你生成 HTML,因为这样会减少维护并且更健壮。

    【讨论】:

    • 感谢您的回复。我尝试删除准备好的文档,但没有帮助,同样的错误。我们的 Javascript 测试严重依赖相关的测试 html,所以我不能让 Chutzpah 生成 html。您提到运行 html 文件可能需要更多设置。您能否详细说明,或者您能否提供一个指向您的文档的链接来解释它?谢谢。
    • Chutzpah 尝试自行运行 qunit。我想你可能需要在你的 html 文件中告诉 qunit 不要自动运行:window.QUnit.config.autostart = false;
    • 在测试 html 文件中添加 可以消除错误“在测试已经开始运行时调用 start()”。下一个错误是,“未定义不是一个对象(评估'QUnit.jsDump.multiline = false')”。这个错误是因为我包含的 QUnit (2.3.2) 版本与 Chutzpah (1.9) 使用的 QUnit 版本不兼容。我降级了我的 QUnit 版本,它解决了我的问题。谢谢
    • 我相信你知道,但以防万一,QUnit 2.x 中有一些重大变化,link
    • 我从样本转到了真实的测试和文件。我已经解决了所有错误。现在,当我右键单击并运行 html 文件时,根据输出和日志文件没有运行任何测试。它报告回来,========== 总测试:0 通过,0 失败,0 总 ==========。我不确定这是 Chutzpah 设置还是 PhantomJS 的设置?关于检查什么的任何想法? TIA。
    【解决方案2】:

    将 QUnit 和 Chutzpah 升级到当前最新版本(分别为 2.3.2 和 4.3.4)后遇到了同样的问题。
    经过多次尝试,最终恢复为有效的组合(QUnit 1.18.0 和 Chutzpah 4.2.2),从而解决了问题。

    【讨论】:

      猜你喜欢
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多