如何用茉莉花和browserify进行unit testing?

任何最好的方式来运行浏览器风格的代码茉莉花HTML记者? 我也希望能够用phantomjs来运行这个headless,因此需要HTML记者。

我觉得还没有一个jasmine-browserify软件包,它并不能真正匹配Browserify / NPM的做事方式(避免全球出口)。

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

只要你不假定全局documentwindow的存在,这与jasmine-node很好地玩。 但是,您必须记住在spec_entry.js注册您的规格,除非您想破解Browserify以使其抓取.spec.js文件的目录。

我会对一个更优雅的解决scheme非常感兴趣,但是,这将透明地与茉莉节点和browserify一起工作。

我创build了一个详细的示例项目,解决了茉莉花testing(和其他) – 请参阅https://github.com/amitayd/grunt-browserify-jasmine-node-example 。 在我的博客文章讨论

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

如果使用grunt-watchify ,则不需要创buildspec_entry.js。 只需在您的规格中使用require,然后将您的规格与grunt-watchify捆绑在一起:

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

然后运行你的testing

 grunt.registerTask('test', ['watchify:test','jasmine:test']); 

由于以上所有的答案都没有过时(当然这并不意味着他们不再工作)我想指向https://github.com/nikku/karma-browserify这是一个业务预处理器亚军&#x3002; 它将testing文件与所有需要的依赖关系结合起来 这样创build的browserify包被传递给基于configuration的业力运行它。 请注意,你可以select任何现代化的testing框架(jasmin,mocha …)和浏览器(幻象,铬)..可能这正是你需要:)

你也可能想看看噶。 安装起来非常简单,它会监视更改并重新运行testing。 看看这个使用Karma来testing一个browserify / react项目的示例项目。 您只需添加一些依赖关系并创build一个karma.conf.js文件。

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