使用 browserify 样式代码运行 jasmine HTML 报告器的任何最佳方法?我还希望能够使用 phantomjs 无头运行,因此需要 HTML 报告器。
5 回答
我创建了一个详细的示例项目来解决茉莉花测试(和其他) - 请参阅https://github.com/amitayd/grunt-browserify-jasmine-node-example。在我的博文中讨论
这方面的方法是为主要源代码(所有模块都公开)创建一个 Browserify 包,并为依赖于外部的主要源代码的测试创建一个。然后测试可以在 PhantomJS 或真正的浏览器中运行。
我认为还没有一个jasmine-browserify
包,它与 Browserify/NPM 的做事方式不匹配(避免全局导出)。
现在,我/node_modules/jasmine-reporters/ext/jasmine.js
只jasmine-html.js
在<head>
我spec_entry.js
的<head>
. (请注意,如果入口点不是顶级的,那么由于 Browserify 中存在一个长期的、棘手的错误,您将度过一段糟糕的时光)。
只要jasmine-node
您不假设存在全局document
或window
. 但是,您必须记住在其中注册您的规范spec_entry.js
,除非您想破解 Browserify 以使其在您的目录中抓取.spec.js
文件。
不过,我会对更优雅的解决方案非常感兴趣,它可以透明地与 jasmine-node 和 browserify 一起使用。
如果您使用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']);
由于以上所有答案都已过时(当然这并不意味着它们不再工作等)我想指出https://github.com/nikku/karma-browserify这是业力的预处理器亚军。它将测试文件与所有必需的依赖项结合在一起。这样创建的 browserify 包被传递给基于配置运行它的业力。请注意,您可以选择任何现代测试框架(jasmin、mocha...)和浏览器(phantom、chrome ..)可能这正是您所需要的 :)
您可能还想研究 Karma。设置非常简单,它会监视更改并重新运行您的测试。查看这个使用 Karma 测试 browserify/react 项目的示例项目。您只需要添加一些依赖项并创建一个 karma.conf.js 文件。
https://github.com/TYRONEMICHAEL/react-component-boilerplate