Jasmine JSCover with PhantomJS-TypeError:';空';它不是一个对象

Jasmine JSCover with PhantomJS-TypeError:';空';它不是一个对象,jasmine,phantomjs,jscoverage,Jasmine,Phantomjs,Jscoverage,当我尝试使用PhantomJS运行JSCover时,我看到以下错误: 接下来的步骤: 1) 运行JSCover服务器: java-jar~/JSCover/target/dist/JSCover-all.jar-ws--report dir=report 2) 使用JSCover运行PhantomJS runner: *phantomjs--debug=true~/JSCover/src/test/javascript/lib/phantomjs/run-JSCover-jasmine.js l

当我尝试使用PhantomJS运行JSCover时,我看到以下错误:

接下来的步骤:

1) 运行JSCover服务器:

java-jar~/JSCover/target/dist/JSCover-all.jar-ws--report dir=report

2) 使用JSCover运行PhantomJS runner:
*phantomjs--debug=true~/JSCover/src/test/javascript/lib/phantomjs/run-JSCover-jasmine.js
localhost8080//module/framework/test/SpecRunner.html

TypeError:“null”不是对象
(计算“document.body.querySelector”(“.description”).innerText”)`

phantomjs://webpage.evaluate():3
phantomjs://webpage.evaluate():22
phantomjs://webpage.evaluate():22
2013-09-19T16:36:07[调试]网页-评估JavaScript结果QVariant(,)
2013-09-19T16:36:07[调试]网页-evaluateJavaScript“(函数(){return(函数(){ JSU报告(“幻影”); })(); })()" 2013-09-19T16:36:07[调试]网页-evaluateJavaScript结果QVariant(,)
2013-09-19T16:36:07[调试]网络-资源请求错误:5(“操作已取消”)URL:
localhost8080//lib/backbone/1.0.0/backbone.js?cb=0.538125440662603

当我尝试用PhantomJS运行Jasmine时,我遇到了同样的问题。 我意识到最新版本的Jasmine-html.js(Jasmine-2.0.0-rc2) 不支持PhantomJS的run-jasmine.js(PhantomJS-1.9.2-windows)

在jasmine-2.0.0-rc2版本的jasmine-html.js中, 如果所有测试都通过,“.description”类不可用。 仅当任何测试失败时,才会创建此“描述”类

因此,当我在所有测试都通过的情况下运行phantomjs时,我会收到上面的错误消息。 我修改了run-jasmine.js以适应jasmine-html.js(jasmine-2.0.0-rc2)以
解决此问题。

是否异步加载测试?我对模块化javascript使用requirejs。它还用于加载测试规范:

<script data-main='SpecRunner' src='/test/scripts/libs/require.js'></script>

根据加载的代码量,您可能必须增加延迟。

这是我昨天遇到的问题。事实证明,该示例脚本不适用于较新的版本,因此我构建了一个适用于Jasmine 2.X的新幻影脚本来修复它。您可以在我的存储库中找到工作脚本:


您使用Jasmine的HtmlReporter还是其他的?我相信您看到了这个错误,因为页面不包含由HtmlReporter创建的标记。HtmlReporter和当前jasmine也有同样的问题。使用karma jasmine的karma测试很好,但是jasmine reporter在运行测试之前不会等待窗口加载。我在其中一个描述块中有一个document.body.appendChild。我正在测试DOM。我使用与run-jasmine.js相同的设置,在TeamCity之外运行测试可以正常工作。在TeamCity内部运行时,我从构建日志中获得以下信息。E:\APPS\TeamCity\buildAgent\work\7e813246cff2b28\jQuery\src\Jobs.Web.UnitTests\S‌​目录:E:\APPS\TeamCity\buildAgent\work\7e813246cff2b28[15:11:05][Step 4/4]“waitFor()”中的pecRunner.html[15:10:50][Step 4/4]在12006ms内完成。[15:11:05][Step 4/4]进程退出,代码为0我尝试增加等待时间,但没有帮助非常好的脚本,尽管我发现了一个错误:for(var j=0;jpage.open(system.args[1], function(status){ if (status !== "success") { console.log("Unable to access network"); phantom.exit(); } else { // Added 1s delay here window.setTimeout(function() { waitFor(function(){ return page.evaluate(function(){ return document.body.querySelector('.symbolSummary .pending') === null }); }, function(){ var exitCode = page.evaluate(function(){ console.log(''); console.log(document.body.querySelector('.description').innerText); var list = document.body.querySelectorAll('.results > #details > .specDetail.failed'); if (list && list.length > 0) { console.log(''); console.log(list.length + ' test(s) FAILED:'); for (i = 0; i < list.length; ++i) { var el = list[i], desc = el.querySelector('.description'), msg = el.querySelector('.resultMessage.fail'); console.log(''); console.log(desc.innerText); console.log(msg.innerText); console.log(''); } return 1; } else { console.log(document.body.querySelector('.alert > .passingAlert.bar').innerText); return 0; } }); page.evaluate(function(){ jscoverage_report('phantom'); }); phantom.exit(exitCode); }); }, 1000); } });