如何使用Karma测试Node.js后端代码(Testacular)


Answers:


82

你不知道 业力仅用于测试基于浏览器的代码。如果您的项目在后端具有mocha测试,而在前端具有karma / mocha,请尝试在脚本下编辑package.json以将测试设置为:mocha -R spec && karma run karma.con

然后,如果npm test返回true,您将知道提交或部署是安全的。


谢谢!我找到了使用Grunt的解决方案,而我已经计划在我的项目中进行设置。看到我自己的答案。
西尔万(Sylvain)

基本上所有JS的测试运行程序都依赖于浏览器吗?没用

4
Mocha和Jasmine并不依赖浏览器,而当您想在无头浏览器上运行时,请考虑使用phantomjs。
丹·科恩

2
请注意,依靠浏览器进行测试也不错。有多种测试,端到端测试有效,取决于您的需求。在某些情况下,甚至测试视觉回归(请参见facebook的huxley)也很重要。
西罗·科斯塔

15

似乎无法完成(感谢@dankohn)。这是我使用Grunt的解决方案:

  • 业力:更新您的karma.conf.js文件

    • autoWatch = false;
    • singleRun = true;
    • 设置browsers = ['PhantomJS'];(具有内联结果)
  • 咕unt声:

    • npm install grunt-contrib-watch grunt-simple-mocha grunt-karma
    • 配置两个grunt任务(请参阅下面的grunt文件)

Gruntfile.js:

module.exports = function (grunt) {
  grunt.loadNpmTasks('grunt-simple-mocha');
  grunt.loadNpmTasks('grunt-karma');

  grunt.initConfig({
    simplemocha: {
      backend: {
        src: 'test/server-tests.js'
      }
    },
    karma: {
      unit: {
        configFile: 'karma.conf.js'
      }
    }
  });

  // Default task.
  grunt.registerTask('default', ['simplemocha', 'karma']);
};
  • Grunt(可选):将grunt-watch配置为在更改规格文件或要测试的文件后运行。

  • 使用grunt命令运行所有命令。


3
因此您仍然需要浏览器,只是浏览器是无头的浏览器。真没用,绝对没有使用业力进行服务器端测试。

5
嗨,这不是在后端使用karma,而是在使用mocha,因此没有浏览器。这是保存文件后立即运行所有测试的便捷方法。
西尔万2014年

尽管我实际上并不需要Karma,但确实使我走上了一条简单的道路,可以进行粗略的设置来自动运行我的摩卡测试,所以谢谢。
Michael Oryl 2014年

有趣的方法。但是,如何确保在测试中正确识别Sails全局变量?
dmvianna 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.