如何使用Jasmine和Browserify进行单元测试?

9
有没有最佳方法来使用browserify风格的代码运行jasmine HTML报告器?我还希望能够在phantomjs上无头运行,因此需要HTML报告。
5个回答

8
我创建了一个详细的示例项目,涉及jasmine测试(和其他内容)-请参见https://github.com/amitayd/grunt-browserify-jasmine-node-example。在我的博客文章中讨论。
这方面的方法是为主要源代码创建一个Browserify捆绑包(其中所有模块都被公开),以及一个依赖于主要源代码的外部文件的测试。然后可以在PhantomJS或真实浏览器中运行测试。

5
我认为目前还没有jasmine-browserify包,并且它并不真正符合Browserify / NPM的做法(避免全局导出)。目前,我只需在页面顶部包含/node_modules/jasmine-reporters/ext/jasmine.jsjasmine-html.js,并在顶级spec_entry.js中引入我的所有规格说明,然后使用该文件作为Browserify捆绑包的入口点,将其放置在<head>之后。(请注意,如果入口点不是顶级的,则由于Browserify中存在已久的棘手错误,您将会遇到问题)。
这与jasmine-node配合得很好,只要您不假定存在全局documentwindow。但是,您必须记住在spec_entry.js中注册您的规范,除非您想要黑客Browserify来获取其爬行您的.spec.js文件的目录。
但是,我很感兴趣找到更优雅的解决方案,可以透明地与jasmine-node和browserify一起使用。

3
嗨,很晚才来参加派对,但如果对您仍有帮助,请查看我的回复或https://github.com/amitayd/grunt-browserify-jasmine-node-example。 - Amitay Dobo

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']);

1
作为所有上面的答案都有点过时(当然这并不意味着它们不再起作用等),我想指向https://github.com/nikku/karma-browserify,这是karma运行器的一个预处理器。它将测试文件与所有必需的依赖项组合在一起。这样创建的browserify bundle被传递给karma,根据配置运行它。请注意,您可以选择任何现代测试框架(jasmin,mocha...)和浏览器(phantom,chrome..)。这可能正是你需要的 :)

0
你可能也想了解一下Karma。它的设置非常简单,它会监控代码变化并重新运行你的测试。看看这个使用Karma来测试browserify/react项目的示例项目。你只需要添加几个依赖并创建一个karma.conf.js文件即可。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接