9

使用 browserify 样式代码运行 jasmine HTML 报告器的任何最佳方法?我还希望能够使用 phantomjs 无头运行,因此需要 HTML 报告器。

4

5 回答 5

8

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

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

于 2013-05-16T23:43:54.603 回答
5

我认为还没有一个jasmine-browserify包,它与 Browserify/NPM 的做事方式不匹配(避免全局导出)。

现在,我/node_modules/jasmine-reporters/ext/jasmine.jsjasmine-html.js<head>spec_entry.js<head>. (请注意,如果入口点不是顶级的,那么由于 Browserify 中存在一个长期的、棘手的错误,您将度过一段糟糕的时光)。

只要jasmine-node您不假设存在全局documentwindow. 但是,您必须记住在其中注册您的规范spec_entry.js,除非您想破解 Browserify 以使其在您的目录中抓取.spec.js文件。

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

于 2012-06-18T18:23:00.353 回答
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']);
于 2014-04-17T18:01:06.497 回答
1

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

于 2016-03-16T22:04:41.353 回答
0

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

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

于 2014-09-06T19:43:43.643 回答