Не удается запустить Mocha с CoffeeScript
Makefile - Содержание:
REPORTER = dot
all: build
build:
@./node_modules/coffee-script/bin/coffee \
-c \
-o lib src
clean:
rm -rf lib
mkdir lib
watch:
@./node_modules/coffee-script/bin/coffee \
-o lib \
-cw src
test:
@./node_modules/mocha/bin/mocha \
--reporter $(REPORTER) \
test/*.coffee
.PHONY: build clean watch test
В корневом каталоге проекта есть тестовая папка с двумя файлами: mocha.opts и example.coffee
example.coffee - Содержание
describe "feature", ->
it "should add two numbers", ->
(2+2).should.equal 4
При запуске make test
, получив следующую ошибку:
cribe 'feature',
^^^^^^^^^
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
SyntaxError: Unexpected string
at Module._compile (module.js:429:25)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Module.require (module.js:354:17)
at require (module.js:370:17)
at /home/my_username/testcode/coffeepress/node_modules/mocha/bin/_mocha:261:27
at Array.forEach (native)
at load (/home/my_username/testcode/coffeepress/node_modules/mocha/bin/_mocha:258:9)
at Object.<anonymous> (/home/my_username/testcode/coffeepress/node_modules/mocha/bin/_mocha:249:1)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Array.0 (module.js:479:10)
at EventEmitter._tickCallback (node.js:192:40)
Запуск Mocha с js файлами преуспевает, но не может заставить его работать с CoffeeScript. Я очень хочу - для краткости кода.
Пожалуйста, направляйте.
Ответы
Ответ 1
От Mocha 1.0:
coffee- script больше не поддерживается из коробки. CS и аналогичные транспилеры могут использоваться путем сопоставления расширений файлов (для использования с --watch) и имени модуля. Например --compilers coffee:coffee-script
с CoffeeScript 1.6- или --compilers coffee:coffee-script/register
с CoffeeScript 1.7 +.
(Цитата http://visionmedia.github.io/mocha/#compilers-option) Итак, вам нужно добавить строку
--compilers coffee:coffee-script/register
или, для CS <= 1,6.x,
--compilers coffee:coffee-script
в ваш mocha.opts
файл.
Ответ 2
Начиная с CoffeeScript 1.7, опция должна быть:
--compilers coffee:coffee-script/register
issue был отправлен на сайт Mocha github.
Ответ 3
Мне потребовалось два изменения для моих мокковых аргументов, чтобы заставить это работать:
--require coffee-script/register
--compilers coffee:coffee-script/register