Javascript 运行QUnit测试时,静态选定变量丢失
我刚开始使用QUnit,遇到了一个问题 在编写JavaScript文件时,我将所有变量放在页面顶部,如下所示: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
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(){})调用中,以确保它在文档准备就绪后发生。这对你有用吗?如果没有,我们可以考虑改变订单,但我需要确保这不会影响其他人。理想情况下,我不希望您使用该模板,因为它更脆弱,但我听到您对缺乏文档的反馈。谢谢