gpt4 book ai didi

javascript - 如何在QUnit中加载不同的html文件?

转载 作者:行者123 更新时间:2023-12-01 02:29:01 26 4
gpt4 key购买 nike

我正在使用 QUnit 进行 js 和 jquery 单元测试。我的 HTML 看起来像这样:

<!DOCTYPE html>
<html>
<head>
<title>QUnit Test Suite</title>

<script src="../lib/jquery.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.16.0.css" type="text/css" media="screen">

<script type="text/javascript" src="http://code.jquery.com/qunit/qunit-1.16.0.js"></script>

<!--This is where I may have to add startPage.html--->
<script src="../login.js"></script>

<script src="../test/myTests.js"></script>


</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
</body>
</html>

目前,我正在添加如图所示的 login.js,并且我可以正确获取对 login.js 中定义的对象的引用。

但是,login.js 中的函数包含对位于其他位置的 startPage.html 中定义的一些 dom 元素的引用。

所以,如果我说 $('#login-btn'),它就会抛出错误。有没有什么办法解决这一问题?

我可以吗(a) 将 startPage.html 引用到上面给出的 qunit 页面?
(b) 在我运行测试的文件 (myTests.js) 中引用或加载 startPage.html:

QUnit.test( "a test", function( assert ) {
assert.equal( 1, "1", "String '1' and number 1 have the same value" );//works
assert.equal( login.abc, "abc", "Abc" );//works with attributes
assert.equal(($("#userid").val()),'', 'Userid field is present');//fails
assert.equal( login.ValidUserId(), true, "ValidUserId" );//fails with functions
});

QUnit 是否提供任何方法来加载 Html/php 文件,以便在测试之前定义它们。就像 Jasmine 中的“装置”?

编辑:还请告诉我如果有 startPage.php 该怎么办

最佳答案

有几种方法可以做到这一点。最简单的就是使用内置的 QUnit "fixtures" element 。在您的 QUnit HTML 文件中,只需在 ID 为 qunit-fixture 的 div 中添加您想要的任何 HTML。您放入其中的任何 HTML 都将重置为每次测试之前加载的内容(自动)。

<html>
...
<body>
<div id='qunit'></div>
<div id='qunit-fixture'>
<!-- everything in here is reset before each test -->
<form>
<input id='userid' type='text'>
<input id='login-btn' type='submit'>
</form>
</div>
</body>
</html>

请注意,装置中的 HTML 并不一定要与生产中的 HTML 相匹配,但显然您可以做到这一点。实际上,您应该只添加最少的必要 HTML,以便最大限度地减少对测试的任何副作用。

第二个选项是实际从该登录页面提取 HTML 和 delay the start of the QUnit tests直到 HTML 加载完成:

<html>
<head>
...
<script type="text/javascript" src="http://code.jquery.com/qunit/qunit-1.16.0.js"></script>
<script>
// tell QUnit you're not ready to start right away...
QUnit.config.autostart = false;

$.ajax({
url: '/path/to/startPage.html',
dataType: 'html',
success: function(html) {
// find specific elements you want...
var elem = $(html).find(...);
$('#qunit-fixture').append(elem);

QUnit.start(); // ...tell QUnit you're ready to go
}
});
</script>

...
</head>

...
</html>

关于javascript - 如何在QUnit中加载不同的html文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27839581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com