Javascript BlanketJS+;Jasmine 2.0不工作
我一直在用Jasmine 2.0.0进行测试,它运行起来没有任何问题。 但是,当我在代码中附加BlanketJS时,出现了一个问题 我使用了一个与Jasmine 1.3.1一起工作的specRunner()。但当我用Jasmine 2.0.0替换Jasmine 1.3.1时,它不起作用 以下是BlanketJS repo的原始代码:Javascript BlanketJS+;Jasmine 2.0不工作,javascript,requirejs,jasmine,blanket.js,Javascript,Requirejs,Jasmine,Blanket.js,我一直在用Jasmine 2.0.0进行测试,它运行起来没有任何问题。 但是,当我在代码中附加BlanketJS时,出现了一个问题 我使用了一个与Jasmine 1.3.1一起工作的specRunner()。但当我用Jasmine 2.0.0替换Jasmine 1.3.1时,它不起作用 以下是BlanketJS repo的原始代码: <html> <head> <title>Jasmine Spec Runner</title> <link
<html>
<head>
<title>Jasmine Spec Runner</title>
<link rel="stylesheet" type="text/css" href="../vendor/jasmine.css">
<script type="text/javascript" src="../vendor/jasmine.js"></script>
<script type="text/javascript" src="../vendor/jasmine-html.js"></script>
<script type="text/javascript" src="../helpers/console_runner.js"></script>
<script type="text/javascript" src="../../node_modules/requirejs/require.js"></script>
<script type="text/javascript" data-cover-only="code/" data-cover-never="['all.tests','code/tests']"
src="../../dist/qunit/blanket.js"> </script>
<script type="text/javascript" src="../../src/adapters/jasmine-blanket.js"></script>
<script type="text/javascript">
if (window.require && typeof (window.require.config) === 'function') {
require.config({
baseUrl: './code'
});
}
</script>
<script type="text/javascript" src="code/all.tests.jasmine.js"></script>
<script type="text/javascript">
(function () {
window.blanketTestJasmineExpected=2;
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter();
var oldResult = htmlReporter.reportRunnerResults;
jasmineEnv.addReporter(htmlReporter);
/* this is just for our automated tests */
window.jasmine_phantom_reporter = new jasmine.ConsoleReporter;
jasmineEnv.addReporter(jasmine_phantom_reporter);
/* */
jasmineEnv.specFilter = function (spec) {
return htmlReporter.specFilter(spec);
};
var currentWindowOnload = window.onload;
window.onload = function() {
if (currentWindowOnload) {
currentWindowOnload();
}
execJasmine();
};
function execJasmine() {
jasmineEnv.execute();
}
})();
</script>
</head>
<body>
</body>
</html>
茉莉花跑步者
if(window.require&&typeof(window.require.config)==“函数”){
require.config({
baseUrl:“./code”
});
}
(功能(){
窗口。毛毯Jasminefected=2;
var jasmineEnv=jasmine.getEnv();
jasmineEnv.updateInterval=1000;
var htmlReporter=new jasmine.htmlReporter();
var oldResult=htmlReporter.reportRunnerResults;
jasmineEnv.addReporter(htmlReporter);
/*这只是为了我们的自动化测试*/
window.jasmine\u phantom\u reporter=新的jasmine.ConsoleReporter;
jasmineEnv.addReporter(jasmine_phantom_reporter);
/* */
jasmineEnv.specFilter=函数(spec){
返回htmlReporter.specFilter(spec);
};
var currentWindowOnload=window.onload;
window.onload=函数(){
如果(currentWindowOnload){
currentWindowOnload();
}
茉莉花();
};
函数execJasmine(){
jasminev.execute();
}
})();
我添加了Jasmine 2.0.0文件并更改了以下代码:
....
<title>Jasmine Spec Runner</title>
<link rel="stylesheet" type="text/css" href="../vendor/jasmine.css">
<script type="text/javascript" src="../vendor/jasmine-2.0.0/jasmine.js"></script>
<script type="text/javascript" src="../vendor/jasmine-2.0.0/jasmine-html.js"></script>
<script type="text/javascript" src="../vendor/jasmine-2.0.0/boot.js"></script>
<script type="text/javascript" src="../helpers/console_runner.js"></script>
....
。。。。
茉莉花跑步者
....
将打印错误消息:
Uncaught TypeError: Cannot read property 'env' of undefined jasmine-html.js:38
Uncaught TypeError: Object #<Env> has no method 'currentRunner' jasmine-blanket.js:76
Uncaught TypeError:无法读取未定义的jasmine html.js:38的属性'env'
未捕获的TypeError:对象#没有方法“currentRunner”jasmine毯子。js:76
如何运行此specRunner页面而不出现问题?请给我一个解决办法。谢谢。包层适配器使用currentRunner,但在2.0中已经不存在了。 毯子Jasmine适配器需要更新,因为此接口和报告器接口都已更改 打开jasmine-blanket.js文件,将底部的代码替换为:
BlanketReporter.prototype = {
specStarted: function(spec) {
blanket.onTestStart();
},
specDone: function(result) {
var passed = result.status === "passed" ? 1 : 0;
blanket.onTestDone(1,passed);
},
jasmineDone: function() {
blanket.onTestsDone();
},
log: function(str) {
var console = jasmine.getGlobal().console;
if (console && console.log) {
console.log(str);
}
}
};
// export public
jasmine.BlanketReporter = BlanketReporter;
//override existing jasmine execute
var originalJasmineExecute = jasmine.getEnv().execute;
jasmine.getEnv().execute = function(){ console.log("waiting for blanket..."); };
blanket.beforeStartTestRunner({
checkRequirejs:true,
callback:function(){
jasmine.getEnv().addReporter(new jasmine.BlanketReporter());
jasmine.getEnv().execute = originalJasmineExecute;
jasmine.getEnv().execute();
}
});
那么它应该会像预期的那样
埃塔-就我个人而言,我会改去伊斯坦布尔,因为毯子现在似乎很少更新(如果有的话)。伊斯坦布尔有更完整的覆盖统计数据(不仅仅是行-分支等),并且可以将代码气候等工具导出到lcov。它完美地与Jasmine或任何测试框架一起工作 现在实际上有一个2.x版jasmine的适配器。但我在配置它时仍然遇到一些问题。最终,我正确地配置了所有内容,这就是我得到的:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tests</title>
<link rel="stylesheet" href="components/jasmine.css">
<script src="components/jasmine.js"></script>
<script src="components/jasmine-html.js"></script>
<script src="components/boot.js"></script>
<script type="text/javascript" data-cover-only="app/" src="components/blanket.js" data-cover-adapter="components/jasmine-2.x-blanket.js"></script>
<script src="components/blanket_browser.js"></script>
<script src="components/jasmine-2.x-blanket.js"></script>
<!-- sources -->
<script src="components/angular.js"></script>
<script src="components/angular-mocks.js"></script>
<script src="app/custom-forms.js"></script>
<script src="app/route-selector.js"></script>
<!-- tests -->
<script src="tests/custom-forms-tests.js"></script>
<script src="tests/route-selector-tests.js"></script>
</head>
<body>
</body>
</html>
测验
注意:我使用bower检索jasmine和毯子,但对于我必须引用的毯子文件有一些混淆,因此:
- “components/blanket.js”->我从dist/qunit/blanket.js获得这个文件
- “components/blanket_browser.js”->src/blanket_browser.js
- “components/jasmine-2.x-blanket.js”->src/adapters/jasmine-2.x-blanket.js
请注意,我还使用jasmine附带的boot.js,它工作正常。希望这些信息能帮助别人。当你说它与Jasmine完美配合时……我能在我的Jasmine结果中显示结果吗,比如?