我正在尝试在Mocha中为我正在使用Zappa.js编写的应用程序设置测试。到目前为止,我一直关注this tutorial,并将我需要的东西从JS转换为Coffeescript。
但是我试图运行测试时有点困惑。我有一个Makefile,目前看起来像这样:
REPORTER = dot
test:
@NODE_ENV=test ./node_modules/.bin/mocha \
--reporter $(REPORTER) \
.PHONY: test
我已经设置了我的package.json文件来运行这样的测试:
{
"scripts": {
"test": "make test"
}
}
我发现的问题是,因为我正在尝试使用Coffeescript编写我的Mocha测试,当我运行“npm test”时,Mocha不会在“test /”文件夹中选择任何测试。我知道一个事实,我可以告诉Mocha在终端中使用以下内容运行.coffee文件(有效):
mocha --compilers coffee:coffee-script
我想知道的是,如何告诉Mocha默认使用Coffeescript文件?
答案 0 :(得分:5)
好的,我设法找到了解决自己问题的方法,所以我想我会分享以防其他人需要这个问题。
注意:对于CoffeeScript 1.7+ - 需要将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更改为:
#package.json
{
"scripts": {
"test": "cake test"
}
}
最后,我必须使用以下方法将Coffeescript安装到项目中:
npm install coffee-script
创建一个文件test / test_helper.coffee,其中包含测试的全局声明。
答案 1 :(得分:4)
我使用npm
直接配置mocha测试package.json(仅限脚本)
"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
答案 2 :(得分:0)
以下是有效的 Makefile 和 package.json
<强>生成文件:强>
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
package.json(仅限devDependencies):
"devDependencies": {
"coffee-script": "~1.6.3",
"chai": "~1.7.2",
"mocha": "~1.12.0"
}
然后执行:
% make clean
% make test