如何用jasmine和browserify进行单元测试?

时间:2012-06-07 18:03:47

标签: unit-testing node.js jasmine browserify

使用browserify样式代码运行jasmine HTML报告器的最佳方法是什么?我也希望能够用phantomjs运行这个无头,因此需要HTML记者。

5 个答案:

答案 0 :(得分:8)

我已经创建了一个详细的示例项目来解决茉莉花测试(以及其他问题) - 请参阅https://github.com/amitayd/grunt-browserify-jasmine-node-example。在my blog post

进行讨论

这方面的方法是为主要源代码创建一个Browserify包(所有模块都公开),另一个用于依赖外部主要源代码的测试。然后可以在PhantomJS或真实浏览器中运行测试。

答案 1 :(得分:5)

我认为还没有jasmine-browserify软件包,并且它与Browserify / NPM的处理方式并不匹配(避免全局导出)。

目前,我只在/node_modules/jasmine-reporters/ext/jasmine.js的顶部添加了jasmine-html.js<head>,并要求我在顶级spec_entry.js中使用我的所有规范作为我之后在<head>中添加的Browserify包的入口点。 (请注意,如果入口点不是顶级,那么由于Browserify中持久且粗糙的错误,您将会遇到错误的时间。)

只要您不认为存在全局jasmine-nodedocument,就可以很好地与window一起使用。但是,您必须记住在spec_entry.js中注册您的规范,除非您想破解Browserify以使其抓取.spec.js文件的目录。

我对更优雅的解决方案非常感兴趣,它可以透明地与jasmine-node和browserify一起使用。

答案 2 :(得分:4)

如果您使用grunt-watchify,则无需创建spec_entry.js。只需在您的规范中使用require,然后使用grunt-watchify捆绑您的规范:

    watchify: {
        test: {
            src: './spec/**/*Spec.js',
            dest: 'spec/spec-bundle.js'
        }
    },
    jasmine: {
        test: {
            options: {
                specs: 'spec/spec-bundle.js'
            }
        }
    },

然后用

运行测试
grunt.registerTask('test', ['watchify:test','jasmine:test']);

答案 3 :(得分:1)

由于以上所有答案都没有过时(当然这并不意味着他们不再工作等等)。我想指出https://github.com/nikku/karma-browserify这是业力跑步者的预处理器。它将测试文件与所有必需的依赖项相结合。这样创建的browserify包被传递给karma,它基于配置运行它。请注意,您可以选择任何现代测试框架(jasmin,mocha ...)和浏览器(幻像,镀铬......)可能这正是您所需要的:)

答案 4 :(得分:0)

您可能还想了解一下Karma。设置非常简单,它会监视更改并重新运行测试。查看这个使用Karma测试browserify / react项目的示例项目。您只需添加一些依赖项并创建一个karma.conf.js文件。

https://github.com/TYRONEMICHAEL/react-component-boilerplate