1

我已经学会了如何在 Jasmine 中为使用 Yeoman 创建的 Backbone 应用程序编写测试。但是,我在 json 文件中有我的测试数据。我想使用模型获取加载 JSON,但是由于 URI 错误,当我在本地打开文件时它不起作用。

我想知道如何在 grunt 服务器中加载生成的规范运行程序,以便请求能够工作?

另一个问题是,当测试实际在 PhantomJS 中运行时,它是在 localhost 上运行还是只是像在文件系统上打开文件一样被打开?

大家平时是怎么写测试的呢?我一直在编写一些测试代码,然后运行 ​​grunt test。如果测试失败,我在 Firefox 中打开 _Specrunner.html 并检查。这很乏味,我觉得必须有更好的方法来做到这一点。

4

1 回答 1

1

你的问题真的更像是三个,但我可以回答第三个。我一直在做的是使用非常有用的testem ;只需让 Chrome 访问一个在后台不断运行测试的 URL,以确保一切正常。如果没有,CLI(或标题栏中的计数器)会通知您修复损坏的代码。

我的 testem.yml 配置如下所示:

framework: jasmine
test_page: lib/testRunner.html

然后我坚持我的 specrunner,这样我就不必每次想要测试某些东西时都重建一个新的:

<!doctype html>
<html>

    <head>
        <title>Test'em</title>
        <script src="vendor/jquery/jquery.min.js"></script>
        <script src="/testem/jasmine.js"></script>
        <script src="vendor/jasmine-jquery/lib/jasmine-jquery.js"></script>
        <script src="/testem.js"></script>
        <script src="/testem/jasmine-html.js"></script>
        <link rel="stylesheet" href="/testem/jasmine.css">
    </head>

    <body>
        <div id="jasmine_content"></div>
        <script src="vendor/requirejs/require.js"></script>
        <script>
        // require config stripped out for brevity
        require(['specs'], function() {
            var jasmineEnv = jasmine.getEnv();
            jasmineEnv.addReporter(new jasmine.HtmlReporter);
            jasmineEnv.execute();
        });


        </script>
    </body>

</html>

我一直在使用它来测试使用 RequireJS 用 Backbone 编写的应用程序,并且测试运行器非常健壮。我建议你试一试。

于 2013-10-16T18:05:17.943 回答