我目前正试图在Mocha中为我使用Zappa.js编写的应用程序设置测试。到目前为止,我一直在遵循本教程,并将我需要的东西从JS转换为Coffeescript。
然而,我有点卡住试图运行测试。我有一个Makefile,目前看起来像这样:
REPORTER = dot
test:
@NODE_ENV=test ./node_modules/.bin/mocha
--reporter $(REPORTER)
.PHONY: test
我已经设置好了我的包。Json文件运行测试,像这样:
{
"scripts": {
"test": "make test"
}
}
我发现的问题是,因为我也试图使用Coffeescript编写我的Mocha测试,当我运行"npm test"时,Mocha没有在"test/"文件夹中拾取我的任何测试。我知道一个事实,我可以告诉Mocha运行.coffee文件,通过在终端中使用以下命令(可以工作):
mocha --compilers coffee:coffee-script
我想知道的是我如何告诉Mocha默认使用Coffeescript文件?
好的,我设法找到了一个方法来解决我自己的问题,所以我想我应该分享一下,以防其他人需要这个。
注意:对于CoffeeScript 1.7+——require coffee-script需要更改为——require coffee-script/register
解决方案是创建一个Cakefile而不是Makefile,它看起来像这样:#Cakefile
{exec} = require "child_process"
REPORTER = "min"
task "test", "run tests", ->
exec "NODE_ENV=test
./node_modules/.bin/mocha
--compilers coffee:coffee-script
--reporter #{REPORTER}
--require coffee-script
--require test/test_helper.coffee
--colors
", (err, output) ->
throw err if err
console.log output
然后更改包。
#package.json
{
"scripts": {
"test": "cake test"
}
}
最后,我必须在项目中安装Coffeescript:
npm install coffee-script
创建一个文件test/test_helper。
我直接使用npm配置mocha测试
包。
"scripts": {
"start": "node app.js",
"start-watch": "./node_modules/.bin/node-dev app.js",
"test": "NODE_ENV=test ./node_modules/.bin/mocha --require coffee-script --compilers coffee:coffee-script --recursive ./test",
"test-watch": "NODE_ENV=test ./node_modules/.bin/mocha --require coffee-script --compilers coffee:coffee-script --recursive ./test --watch"
}
,然后通过运行
来执行测试coffeescript文件npm test
或
npm run-script test-watch
下面是工作的Makefile和package.json
Makefile:
REPORTER = dot
COMPILER = coffee:coffee-script
node_modules:
@npm install
test: node_modules
@./node_modules/.bin/mocha --reporter $(REPORTER) --compilers $(COMPILER)
clean: node_modules
@$(RM) -r node_modules
.PHONY: clean test
包。
"devDependencies": {
"coffee-script": "~1.6.3",
"chai": "~1.7.2",
"mocha": "~1.12.0"
}
然后做:
% make clean
% make test