unit-testing - 如何制作 mocha watch,编译和测试依赖于保存的 coffeescript

标签 unit-testing node.js tdd coffeescript mocha.js

我正在从事一个使用 coffeescript 进行开发和测试的项目。我在打开 mocha 的 --watch 标志的 Node 中运行测试,这样我就可以在进行更改时自动运行测试。

虽然这在一定程度上起作用,但只有 ./test/test.*.coffee 文件在保存时会被重新编译。这是我的目录结构:

/src/coffee
-- # Dev files go here
/test/
-- # Test files go here

mocha watcher 响应/src 和/test 目录中的文件更改,但只要重新编译/test 目录中的文件,连续测试就会有点乏味。如果我退出并重新启动观察程序,源文件也会重新编译。我怎样才能让 mocha 让咖啡编译器在每次运行时在测试文件中列为依赖项的开发文件上运行?

最佳答案

这是我使用 grunt.js 的回答

您将必须安装 grunt 和一些额外的包。

npm install grunt grunt-contrib-coffee grunt-simple-mocha grunt-contrib-watch

然后编写这个 grunt.js 文件:

module.exports = function(grunt) {

  grunt.loadNpmTasks('grunt-contrib-coffee');
  grunt.loadNpmTasks('grunt-simple-mocha');
  grunt.loadNpmTasks('grunt-contrib-watch');

  grunt.initConfig({
    coffee:{
      dev:{
        files:{
          'src/*.js':'src/coffee/*.coffee',
        }
      },
      test:{
        files:{          
          'test/test.*.js':'test/test.*.coffee'
        }
      }
    },
    simplemocha:{
      dev:{
        src:"test/test.js",
        options:{
          reporter: 'spec',
          slow: 200,
          timeout: 1000
        }
      }
    },
    watch:{
      all:{
        files:['src/coffee/*', 'test/*.coffee'],
        tasks:['buildDev', 'buildTest', 'test']
      }
    }
  });

  grunt.registerTask('test', 'simplemocha:dev');
  grunt.registerTask('buildDev', 'coffee:dev');
  grunt.registerTask('buildTest', 'coffee:test');
  grunt.registerTask('watch', ['buildDev', 'buildTest', 'test', 'watch:all']);

};

注意:我没有关于您如何构建/运行测试的详细信息,因此您当然必须添加 ;)

然后运行 ​​grunt watch 任务:

$>grunt watch

关于unit-testing - 如何制作 mocha watch,编译和测试依赖于保存的 coffeescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13646589/

相关文章:

tdd - 从 Vagrant Ubuntu VM 向主机发送自动测试/保护桌面通知(W7 和 OS X)

java - 如何与 ExtJS MessageBox 元素中的按钮进行交互?

asp.net-mvc - 如何将自动映射器用于具有 IEnumerable<T> 属性的 ViewModel

c++ - 如何检查 Boost 测试框架中 double 值的前 15 个相关数字是否相同?

python - 检测到一个方法是递归的而不调用它?

javascript - 如何从动态生成的 <option> <select> Express ejs 中获取值

node.js - PDF.js - 将 pdf 拆分为多个页面并重新构建多个文件

c++ - 我如何分解代码以简化可测试性?

c# - 测试除一个特定组合之外的所有参数组合

node.js - 添加到字典 - 防止 Microsoft 机器人框架内的自动更正