it-swarm.com.ru

Не удается запустить 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. Я действительно хочу - для краткости кода.

Пожалуйста, руководство. 

44
Sameet

По состоянию на Мокко 1.0:

кофе-скрипт больше не поддерживается из коробки. 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.

90
Trevor Burnham

Начиная с CoffeeScript 1.7, опция должна быть:

--compilers coffee:coffee-script/register

выпуск был подан на сайте Mocha на github.

29
Louis

По-видимому, изменение в Mocha, сделанное в апреле 2018 года (мягко), устранило опцию --compilers. В командной строке вы теперь получите:

(узел: 27864) DeprecationWarning: «--compilers» будет удален в будущей версии Mocha; см. https://git.io/vdcSr для получения дополнительной информации

Как говорит ссылка, это легко исправить, просто не используя --compilers и используя новые (упрощенные) опции mocha.opts:

--require coffeescript/register

test/*.coffee

Последняя строка необходима, чтобы Mocha понял, что теперь он должен использовать файлы *.coffee в качестве тестовых файлов. Кажется, это не охватывается параметром --require.

1
palsch

mocha --require coffeescript/register

Источник: https://github.com/mochajs/mocha/wiki/compilers-deprecation

0
André Valenti

Мне нужно было внести два изменения в мои аргументы mocha, чтобы заставить это работать:

--require coffee-script/register
--compilers coffee:coffee-script/register
0
Evan Moran