如何在grunt服务器中运行Yeoman生成的Jasmine specrunner?

时间:2013-10-16 05:00:09

标签: backbone.js jasmine gruntjs yeoman

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

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

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

你们通常如何编写测试?我一直在编写一些测试代码然后运行grunt测试。如果测试失败,我在Firefox中打开_Specrunner.html并进行检查。这非常繁琐,我觉得必须有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

你的问题实际上更像是三个,但我可以回答第三个问题。我一直在做的是使用testem非常有用;只需让Chrome访问一个不断在后台运行测试的网址,以确保一切正常。如果没有,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中编写的应用程序,并且测试运行器非常强大。我建议你试一试。