我在RequireJS中使用Mocha,测试运行得很好,但是,当我尝试添加覆盖范围的代码时,我得到的是Uncaught TypeError: Object #<HTMLDivElement> has no method 'reporter'
,
下面是我正在运行的代码:
<div id="mocha"></div>
<script src="../src/js/vendor/requirejs/require.js"></script>
<script src="../src/js/vendor/blanket/dist/qunit/blanket.js"
data-cover-adapter="../src/js/vendor/blanket/src/adapters/mocha-blanket.js"></script>
<script src="SpecRunner.js" data-cover></script>
我的逃亡者:
require(["../src/js/require-config.js"], function () {
// Set testing config
require.config({
baseUrl: "../src/js",
paths: {
"mocha": "vendor/mocha/mocha",
"chai": "vendor/chai/chai"
},
urlArgs: "bust=" + (new Date()).getTime()
});
require([
"require",
"chai",
"mocha"
], function (require, chai) {
var should = chai.should();
mocha.setup("bdd");
require([
"specs.js",
], function(require) {
if (window.mochaPhantomJS) {
mochaPhantomJS.run();
} else {
mocha.run();
}
});
});
});
就像我说的-我的测试都很好,我只是不知道为什么毯子不起作用。
更新:
我可以通过在开始时包含mocha的脚本标记来运行它,但是,现在它运行了两次mocha测试。
发布于 2013-12-28 09:22:59
我想出了办法,写了一篇文章,让毛毯和AMD的摩卡一起工作。这是一篇博文概述了流程以及一个使用工作代码进行回购。
我使用以下方法加载测试:
require(["../src/js/require-config"], function () {
require.config({
baseUrl: "../src/js",
paths: {
chai: "vendor/chai/chai"
}
});
require([
"chai"
], function (chai) {
chai.should();
window.expect = chai.expect;
mocha.setup("bdd");
require([
"specs.js"
], function () {
mocha.run();
});
});
});
然后是页面上的以下代码:
<div id="mocha"></div>
<script src="../src/js/vendor/mocha/mocha.js"></script>
<script data-main="main-tests" src="../src/js/vendor/requirejs/require.js"></script>
<script src="../src/js/vendor/blanket/dist/qunit/blanket.js" data-cover-only="../src/js/component"></script>
<script type="text/javascript" src="../node_modules/grunt-blanket-mocha/support/mocha-blanket.js"></script>
<script>
/* global blanket */
if (window.PHANTOMJS) {
blanket.options("reporter", "../node_modules/grunt-blanket-mocha/support/grunt-reporter.js");
}
</script>
发布于 2013-12-24 04:45:06
如何使用RequireJS存在一个问题。如果用RequireJS加载代码,用<script>
标记加载代码,那么:
<script>
的代码取决于RequireJS加载的代码,然后您应该将加载<script>
的代码转换为RequireJS加载。如果不这样做,就会遇到间歇性的故障。<script>
的代码,然后加载<script>
的代码必须在开始用RequireJS加载代码之前加载和执行。从毛毯的文档来看,我确定你的案子是第二个。在开始用RequireJS加载模块之前,您需要加载毯子适配器,但是适配器希望Mocha已经出现。
您必须使用希姆。我不能确定你到底用了什么垫片(因为我不使用毯子),但是这样的东西应该能帮助你朝着正确的方向前进:
shim: {
"blanket": {
exports: "blanket"
},
"mocha-blanket": ["mocha", "blanket"]
}
显然,"blanket"
和"mocha-blanket"
的名称必须适应您的情况。我不认为适配器本身需要有一个exports
值,因为适配器将自己附加到Mocha,而不是在全局空间中导出一些东西。
发布于 2014-12-05 08:43:26
发布的毛毯摩卡适配器不起作用。
使用bower bower install blanket#master --save-dev
安装尚未发布的版本
此外,脚本包含的顺序也很重要。
<script src="mocha.js"></script>
<script>mocha.setup('bdd');</script>
<script data-main="config.js" src="../bower_components/requirejs/require.js"></script>
<script src="../bower_components/blanket/dist/qunit/blanket.js" data-cover-never="bower_components"></script>
<script src="../bower_components/blanket/src/adapters/mocha-blanket.js"></script>
https://stackoverflow.com/questions/20754289
复制相似问题