Question

I'm trying to run some database queries in a Mocha test but I'm running into some problems.

Here's the test (using Mongoose):

it.only "should create some objects", (done) ->
  await models.MyModel1.count defer(err, oldModel1Count)
  await models.MyModel2.count defer(err, oldModel2Count)

  # ... do some stuff

  await models.MyModel1.count defer(err, newModel1Count)
  await models.MyModel2.count defer(err, newModel2Count)

  assert.equal oldModel1Count + 1, newModel1Count
  assert.equal oldModel2Count + 1, newModel2Count

The command for running the tests:

mocha --compilers coffee:iced-coffee-script --require iced-coffee-script --require mocha --colors --recursive test"

The error happens on the first line:

ReferenceError: err is not defined

I can only assume that it is attempting to use normal CoffeeScript to execute this code, so it thinks that defer is a function and attempts to evaluate err.

Is it possible to write the Mocha tests in IcedCoffeeScript?

Était-ce utile?

La solution

This works for me

mocha --require ./fix_my_iced_tests.js --compilers coffee:coffee-script

create fix_my_iced_tests.js

require('iced-coffee-script').register()

create test/some_test.coffee (this make sure that fix actually works)

assert = require 'assert'

describe 'test section', ()->
  it 'is ok', (done)->
    await setTimeout (defer next), 100
    assert.strictEqual(1, 1)
    done()
    return
  return

You should recieve something like this

  Type subdsl
    √ is ok (102ms)


  1 passing (109ms)

without fix you should recieve something like this

ReferenceError: next is not defined

--- EDITED ---

Much better option found here

mocha --compilers coffee:iced-coffee-script/register

Autres conseils

Not sure if that's still relevant, but it's 2015 now, and Node.js has first-class support for Promises and Generators, which enables you to write your code exactly as concise and elegant as IcedCoffeeScript, but with a lot less wrinkles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top