如何用茉莉花和browserify进行unit testing?
任何最好的方式来运行浏览器风格的代码茉莉花HTML记者? 我也希望能够用phantomjs来运行这个headless,因此需要HTML记者。
我觉得还没有一个jasmine-browserify
软件包,它并不能真正匹配Browserify / NPM的做事方式(避免全球出口)。
现在,我只在我的<head>
的顶部包含/node_modules/jasmine-reporters/ext/jasmine.js
和jasmine-html.js
,并且要求我使用顶级spec_entry.js
中的所有规范作为后来放在<head>
的Browserify包的入口点。 (请注意,如果入口点不是顶级的,那么由于Browserify中存在一个持久的,粗糙的错误,您将会遇到不好的时间)。
只要你不假定全局document
或window
的存在,这与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这是一个业务预处理器亚军。 它将testing文件与所有需要的依赖关系结合起来 这样创build的browserify包被传递给基于configuration的业力运行它。 请注意,你可以select任何现代化的testing框架(jasmin,mocha …)和浏览器(幻象,铬)..可能这正是你需要:)
你也可能想看看噶。 安装起来非常简单,它会监视更改并重新运行testing。 看看这个使用Karma来testing一个browserify / react项目的示例项目。 您只需添加一些依赖关系并创build一个karma.conf.js文件。
https://github.com/TYRONEMICHAEL/react-component-boilerplate