Javascript 运行QUnit测试时,静态选定变量丢失

Javascript 运行QUnit测试时,静态选定变量丢失,javascript,jquery,qunit,chutzpah,Javascript,Jquery,Qunit,Chutzpah,我刚开始使用QUnit,遇到了一个问题 在编写JavaScript文件时,我将所有变量放在页面顶部,如下所示: var $input1 = $('#input1'); var $submit = $('#submit'); $submit.on('click', function (e) { submit(e); }); 然后,我将我的活动连接起来,如下所示: var $input1 = $('#input1'); var $submit = $('#submit'); $subm

我刚开始使用QUnit,遇到了一个问题

在编写JavaScript文件时,我将所有变量放在页面顶部,如下所示:

var $input1 = $('#input1');
var $submit = $('#submit');
$submit.on('click', function (e) {
    submit(e);
});
然后,我将我的活动连接起来,如下所示:

var $input1 = $('#input1');
var $submit = $('#submit');
$submit.on('click', function (e) {
    submit(e);
});
这非常有效,而且是一个很好的方法,不必每次我需要一些东西时都不断地去寻找所有的元素。(不要到处乱扔
$(“#提交”)
代码。)

但是,现在我正在使用QUnit运行测试,每次运行新测试时,
QUnit fixture
div中的项目都会被替换。(我正在重写其他人编写的一些代码,因此有一些初始的现有测试。)

到目前为止,另一个人编写的测试在模块的每个之前的
中向
Qunitfixture
div追加了一些静态HTML

最后一点很重要,这是ASP.NET MVC项目的一部分,我们正在使用chutzpah运行测试,因此我们没有创建显式HTML页面来运行每个测试文件。我们的目的是在命令行中运行它们,特别是作为构建过程的一部分

当我们没有构建完整的HTML页面供它们使用时,如何让页面上应该始终存在的静态项保持这种状态

编辑
我对此做了更多的研究,因为我在测试文件期间将HTML添加到DOM中,当我在顶部选择变量时,这些元素还没有出现在我测试的文件中。

事实证明,Chutzpah是问题所在。他们用来测试的HTML非常可怕。所有脚本都在
标记中,因此在将任何HTML添加到DOM之前,都会对它们进行处理。解决这一问题的方法是使用一个

不幸的是,他们的文档没有提供任何关于如何制作此文档的信息。它们列出了要替换的项目,但是(与所有JavaScript文件一样)它们的顺序非常重要,不一定是按照它们列出的顺序。这是我用过的,效果很好

<html>
    <head>
        <title>Chutzpah tests</title>

        @@ReferencedCSSFiles@@
    </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>

        @@TestFrameworkDependencies@@
        @@CodeCoverageDependencies@@
        @@TestHtmlTemplateFiles@@

        @@ReferencedJSFiles@@

        @@TestJSFile@@

        @@AMDTestPath@@
        @@AMDModuleMap@@
    </body>
</html>

如果您将HTML页面与
chutzpah.js
和测试放在同一位置,您还需要添加
tests
过滤器,以便HTML页面不会尝试作为测试运行。

很抱歉,您遇到了一些困难。Chutzpah很长一段时间以来一直在头脑中添加这些引用,这是我第一次听说由它引起的问题。我猜这是因为人们会将代码包装在$(function(){})调用中,以确保它在文档准备就绪后发生。这对你有用吗?如果没有,我们可以考虑改变订单,但我需要确保这不会影响其他人。理想情况下,我不希望您使用该模板,因为它更脆弱,但我听到您对缺乏文档的反馈。谢谢