2013-10-14 115 views
2

我正試圖學習這個自動化的單元測試malarkey。我想使用Grunt自動運行我的Mocha測試,並將測試結果輸出到文件。據我所知,我需要爲此使用grunt-mocha-cov。我有點工作:當測試通過Grunt寫出結果文件確定。但是,當其中一個失敗我得到這個:Grunt運行摩卡 - 在測試失敗時中止

Running "mochacov:all" (mochacov) task 
Warning: Use --force to continue. 

Aborted due to warnings. 

並沒有文件創建。誰能告訴我我要去哪裏?

我的項目的組織是這樣的:

enter image description here

我的測試文件夾中包含一個文件,test.js,它看起來像這樣:

var chai = require("chai"), 
    assert = chai.assert, 
    expect = chai.expect; 

    var foobar = { 
     sayHello: function() { 
     return 'Hello World!'; 
     } 
    } 

    describe('Foobar', function() { 
     describe('#sayHello()', function() { 
     it('should work with assert', function() { 
      assert.equal(foobar.sayHello(), 'Hello World!'); 
     }); 
     it('should work with expect', function() { 
      expect(foobar.sayHello()).to.equal('Hello Worlxd!'); 
     }); 
     }); 
    }); 

的package.json有這樣的:

{ 
    "name": "GruntTest", 
    "version": "0.0.1", 
    "private": true, 
    "devDependencies": { 
    "grunt": "~0.4.1", 
    "grunt-mocha-cli": "~1.3.0", 
    "grunt-contrib-qunit": "~0.3.0", 
    "grunt-contrib-jshint": "~0.6.4", 
    "grunt-mocha": "~0.4.1", 
    "should": "~2.0.1", 
    "chai": "~1.8.1", 
    "grunt-mocha-cov": "0.0.7" 
    }, 
    "description": "Grunt Test", 
    "main": "grunt.js", 
    "dependencies": { 
    "grunt": "~0.4.1" 
    }, 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "BSD" 
} 

這裏是我的Gruntfile.js:

module.exports = function(grunt) { 

    grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    mochacov: { 
     options: { 
     reporter: 'XUnit', 
     require: ['should'], 
     output: 'test-results.xml', 
     bail: false 
     }, 
     all: ['test/*.js'] 
    } 
    }); 

    grunt.loadNpmTasks('grunt-mocha-cov'); 
    grunt.registerTask('default', ['mochacov']); 

}; 

編輯

繼Xavier的意見,我得到了它與mochacov和的xUnit文件記者的工作。這是我的新的改進Gruntfile,萬一有用的給其他人:

module.exports = function(grunt) { 

    grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    mochacov: { 
    options: { 
     reporter: 'xunit-file', 
     require: ['should'], 
     bail: false 
    }, 
    all: ['test/*.js'] 
    } 
    }); 

    grunt.loadNpmTasks('grunt-mocha-cov'); 
    grunt.registerTask('default', ['mochacov']); 

}; 

終端給予警告「已中止因警告」,但mochacov創建一個帶有測試結果的文件xunit.xml。

回答

1

嘗試之一:https://github.com/yaymukund/grunt-simple-mocha

與下列記者之一:http://visionmedia.github.io/mocha/#reporters

或者是這樣的:https://github.com/peerigon/xunit-file

,但事實是,你應該從服務器端溝咕嚕,和使用Makefile!

這裏是一個典型的一個我用:

MOCHA="node_modules/.bin/mocha" 
_MOCHA="node_modules/.bin/_mocha" 
JSHINT="node_modules/.bin/jshint" 
ISTANBUL="node_modules/.bin/istanbul" 

TESTS=$(shell find test/ -name "*.test.js") 

clean: 
    rm -rf reports 

test: 
    $(MOCHA) -R spec $(TESTS) 

jshint: 
    $(JSHINT) src test 

coverage: 
    @# check if reports folder exists, if not create it 
    @test -d reports || mkdir reports 
    $(ISTANBUL) cover --dir ./reports $(_MOCHA) -- -R spec $(TESTS) 

.PHONY: clean test jshint coverage 

就是這樣,只要安裝摩卡,jshint和伊斯坦布爾作爲開發的依賴,你是好去

有些人會告訴你安裝這些工具全球,但它取決於你

+0

謝謝xavier - grunt-simple-mocha只是輸出到控制檯,我無法讓xunit文件工作。我會繼續嘗試。 –

+0

上次我在服務器端使用grunt,它是這樣的:https://github.com/xseignard/rss-unify/tree/a560641050a3e8e06bb040220e53feff83a1003d/server看一看 –

+0

謝謝Xavier,我得到它與mochacov合作! –