【发布时间】:2016-07-31 19:10:35
【问题描述】:
我正在尝试修改教程 here 以使用 QUnit v2.x,但它似乎没有获取我想要测试的 JavaScript 文件。
test.html
<div id="qunit"></div>
<div id="qunit-fixture">
<form>
<input name="text" />
<div class="has-error">Error text</div>
</form>
</div>
<script src="http://code.jquery.com/jquery.min.js"></script>
<script src="qunit.js"></script>
<script src="../list.js"></script>
<script>
QUnit.test("errors should be hidden on keypress", function (assert) {
$('input').trigger('keypress');
assert.equal($('.has-error').is(':visible'), false);
});
</script>
list.js
jQuery(document).ready(function ($) {
$('input').on('keypress', function () {
$('.has-error').hide();
});
});
测试失败,结果为真
教程中提供的代码在 QUnit 1.23 上运行良好
<script>
/*global $, test, equal */
test("errors should be hidden on keypress", function () {
$('input').trigger('keypress');
equal($('.has-error').is(':visible'), false);
});
test("errors not be hidden unless there is a keypress", function () {
equal($('.has-error').is(':visible'), true);
});
</script>
编辑:使用 QUnit v1.23 两个版本的测试都可以工作!
【问题讨论】:
-
您确定您的 test.html 中的所有脚本路径都能正确解析吗?如果测试失败,那么似乎 list.js 中的代码没有运行。
-
将代码放在测试上方的脚本标签中时,它仍然无法工作。我不确定这是否按预期工作。可以在 Web Inspector 资源中访问 list.js 文件。
-
我猜你错过了教程中的 HTML 部分?否则,您的选择器
.has-error将不会选择任何内容。我创建了this fiddle,两个测试都运行良好。 -
@Daniel - 我最初只是从问题中排除了 HTML 部分。我现在已经添加了。您的小提琴正在测试错误版本的 QUnit。你有 1.x 测试,我质疑 2.x 测试不起作用。
标签: javascript jquery unit-testing qunit