我的Jasmine测试套件现在只有400多个测试,但我似乎遇到了一个小问题。 specrunner似乎实际上只运行了5次,并且它的成功似乎是随机的。当它“需要”它将一切正常。如果它没有'采取'那么页面只是坐在那里没有任何错误或任何东西,它只是旋转了一段时间然后呈现一个空屏幕。
我在Firefox和Chrome中都看到了相同的行为。
是否有其他人遇到类似的问题,可能会指出问题所在。
问题似乎越来越慢,所以我想知道它是否与页面大小有关。我的SpecRunner页面是一个RAZOR脚本,看起来像这样......
@using SiansPlan.Authentication
@using SiansPlan.Spa
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Jasmine Spec Runner for SiansPlan SPA</title>
<link rel="stylesheet" type="text/css" href="Content/jasmine.css">
<script type="text/javascript" src="scripts/lib/jasmine.js"></script>
<script type="text/javascript" src="scripts/lib/jasmine-html.js"></script>
<script type="text/javascript" src="scripts/lib/jasmine-jquery.js"></script>
<script src="~/scripts/lib/handlebars.js"></script>
<script data-main="scripts/test/main.js" src="scripts/lib/require.js"></script>
<script type="text/javascript">
require(["../lib/domReady"
@foreach (var file in Html.PathContentFromRoot("scripts/test/spec", Server))
{
<text>,"spec/@file"</text>
}
], function () {
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter();
jasmineEnv.addReporter(htmlReporter);
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>
<div style="display:none;">
@* Key platform variables. *@
<span id="requestSource">website</span>
<span id="apiKey">@ApiKeyManager.Instance.GetKey("website")</span>
</div>
</body>
</html>
如果还有其他我可以提供的帮助,请告诉我。
更新:现在已经完全陷入停滞 - 我已将其追踪到window.onload事件未触发。
答案 0 :(得分:1)
这是一个蹩脚的答案,但我似乎无法找到更好的方法。
我认为窗口onload在正确连接之前就已经开始了(可能是由于前面JS调用中链接脚本的数量)
为了解决这个问题 - 我改变了JavaScript如下......
<script type="text/javascript">
require(["../lib/domReady"
@foreach (var file in Html.PathContentFromRoot("scripts/test/spec", Server))
{
<text>,"spec/@file"</text>
}
], function () {
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter();
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter = function (spec) {
return htmlReporter.specFilter(spec);
};
//var currentWindowOnload = window.onload;
//window.onload = function () {
// if (currentWindowOnload) {
// currentWindowOnload();
// }
// execJasmine();
//};
//function execJasmine() {
// jasmineEnv.execute();
//}
setTimeout(function() {
jasmineEnv.execute();
}, 3000);
})();
</script>
它不漂亮,但每次都有效 -