如何使用毛毯与QUnit测试运行jQuery.noConflict(true)
How to use Blanket.js with QUnit tests run with jQuery.noConflict(true)
我使用QUnit
来测试我正在编写的jQuery plugin
,并希望使用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,以确保测试的纯度。
有办法做到这一点吗?
我也遇到了同样的问题。我在HTML中为qUnit测试的jQuery脚本标签添加了data-cover,它工作了,我认为仪器需要看到它。
编辑
我也注意到这一行在我的html为qUnit。
<!-- 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>
通过删除该块,它不再需要jQuery标签上的data-cover
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 与其他库的jQuery.noConflict()
- AngularJS-使用'true'属性
- JavaScript-切换“;全部检查”;复选框true/false
- location.reload(true)崩溃浏览器选项卡
- 指令的模板必须只有一个根元素:With restrict E&替换true
- JavaScript:只有当数组中的所有项都为true时才执行函数
- 对于loop.if-仅在经过所有间隔后返回true
- if(foo!==null)的计算结果为true,即使foo为null
- ngIf的计算结果始终为true
- 如果函数返回True,则显示Javascript按钮
- (false==false==true)怎么可能是真的
- Javascript If else 只返回 TRUE 或只返回 FALSE
- sails.js beforeCreate方法只接收required设置为true的模型属性
- 在$state.go之后执行$window.location.reload(true)
- 尝试简化检查对象键是否为true并将其推送到另一个对象
- 过滤器返回true或false
- 什么是'true'和'false'和'null'
- 如何使用选项useCSS set true为bxSlider加载onSlideAfter()事件
- 如何使用毛毯与QUnit测试运行jQuery.noConflict(true)