连接gulp以运行用coffeescript编写的mocha测试

时间:2014-07-18 04:19:36

标签: node.js coffeescript mocha gulp

将我尝试过的网站拼凑起来

var gulp = require('gulp');
var gutil = require('gulp-util');
var coffee = require('gulp-coffee');
var mocha = require('gulp-mocha');

gulp.task('test', function() {
    return gulp.src(['tests/*.coffee'], { read: false })
            .pipe(coffee({bare: true}).on('error', gutil.log))
            .pipe(mocha({
                reporter: 'spec',
                globals: {
                    should: require('should')
                }
            }));
});

这总是在我的tests / test.coffee文件的第一行给出错误

require 'should'
describe "something", ->
    it "fails", -> true.should.equal false

此错误:

(function (exports, require, module, __filename, __dirname) { require 'should'
                                                                  ^^^^^^^^

此外,在一项任务中执行此操作似乎并不正确。每个人都觉得它应该是一个取决于前一个输出的任务。

如何将所有这些部分组合在一起?

2 个答案:

答案 0 :(得分:3)

我的gulp配置与你的配置差不多,我所做的就是:

npm install --save-dev should

--save-dev部分是可选的,但我希望将我的依赖项存储到package.json文件中,以便于移植。

修改:

我注意到你第一次将它用于咖啡。如果使用Gulpfile.coffee(您猜对了,Gulpfile写了CoffeeScript),则不需要使用此功能,mocha会将其作为CoffeeScript文件正常运行。

这是test task中的Gulpfile.coffee

gulp.task 'test', - >
    gulp.src(testSources,
        read: false
    )
    .pipe(mocha(
        reporter: 'spec'
        globals:
        should: require('should')
    ))

要让Gulp解析Gulpfile.coffee,请将其另存为 Gulpfile.js

require('coffee-script/register');
require('./Gulpfile.coffee');

编辑2:

我注意到JavaScript版本没有按预期工作。

我的建议是使用Gulpfile中写的CoffeeScript,这样就可以了。我可以与我分享我的速度,但手动转换为CoffeeScript只需不到5分钟,甚至可以使用Js2coffee更快。


或者看看这个Gulpfile.js(不是我的作品)。


或使用Chai并使用以下代码:

chai  = require 'chai'
chai.should() # add should to Object.prototype

describe "Test", ->
    it "should pass", ->
         true.should.equal true

答案 1 :(得分:0)

运行coffeescript规范所需要的只是npm install coffee-script。 无需在coffeescript中使用gulpfile。

如果您安装了coffeesctipt,那么就足以在您的gulpfile中执行这样的测试任务:

gulp.task('test', function(){
  return gulp.src('./specs/**/*.spec.coffee')
    .pipe(mocha({reporter:'nyan'}));
});

所以,不需要通过gulp-mocha管道* .coffee文件

相关问题