gpt4 book ai didi

javascript - 如何将 Blanket.js 与使用 jQuery.noConflict(true) 运行的 QUnit 测试一起使用

转载 作者:行者123 更新时间:2023-11-28 21:30:32 25 4
gpt4 key购买 nike

我正在使用 QUnit 来测试我正在编写的 jQuery 插件,并希望使用 blanket 来生成覆盖信息。

我的测试看起来像:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>My Awesome Test Suite</title>
<!-- Load local jQuery. This can be overridden with a ?jquery=___ param. -->
<script src="../libs/jquery-loader.js"></script>

<!-- Load local QUnit. -->
<link rel="stylesheet" href="../libs/qunit/qunit.css" media="screen">
<script src="../libs/qunit/qunit.js"></script>

<!-- Code Coverage with Blanket -->
<script src="../node_modules/blanket/dist/qunit/blanket.min.js"></script>

<!-- Load local lib and tests. -->
<script src="../build/thingToTest.js" data-cover></script>
<script src="../build/test/thingToTest_test.js"></script>
<!-- Removing access to jQuery and $. But it'll still be available as _$, if
you REALLY want to mess around with jQuery in the console. REMEMBER WE
ARE TESTING A PLUGIN HERE, THIS HELPS ENSURE BEST PRACTICES. REALLY. -->
<script>window._$ = jQuery.noConflict(true);</script>
</head>
<body>
<div id="qunit">
<h1 id="qunit-header">QUnit Tests</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
</div>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture">
<div class="thingToTest-container">
</div>
</div>
</body>
</html>

当我在浏览器中打开它时,我看到了 enable coverage 选项,但是当我检查该选项时,我得到了错误

TypeError: 'undefined' is not an object (evaluating '$.fn')
Source: file:///Users/dave/src/thingToTest/test/thingToTest.html?coverage=true:317

如果我注释掉这一行

<script>window._$ = jQuery.noConflict(true);</script>

然后 blanket 就可以正常工作了。

在简单的情况下,这是可以接受的,但在更复杂的情况下,我真的想以 noConflict 模式加载 jQuery 以确保测试的纯度。

有什么办法可以实现吗?

最佳答案

我遇到了同样的问题。我在用于 qUnit 测试的 HTML 中的 jQuery 脚本标记中添加了数据覆盖,它起作用了,我认为仪器需要看到它。

编辑

我还在 qUnit 的 html 中注意到了这一行。

<!-- Removing access to jQuery and $. But it'll still be available as _$, if
you REALLY want to mess around with jQuery in the console. REMEMBER WE
ARE TESTING A PLUGIN HERE, THIS HELPS ENSURE BEST PRACTICES. REALLY. -->
<script>window._$ = jQuery.noConflict(true);</script>

通过删除该 block ,它不再需要 jQuery 标记上的数据覆盖。

关于javascript - 如何将 Blanket.js 与使用 jQuery.noConflict(true) 运行的 QUnit 测试一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24156924/

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