繁体   English   中英

茉莉无法在我的浏览器中启动(使用Backbone和RequireJS)-必须保持刷新

[英]Jasmine not starting in my browser (with Backbone and RequireJS) - have to keep refreshing

我的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事件未触发。

这是一个错误的答案,但我似乎找不到更好的方法。

我认为window 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>

它不是很漂亮,但每次都可以使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM