I am trying to run a sample CoffeeScript unit test for a CoffeeScript sample class hierarchy, using Mocha. But I keep getting errors and it doesn't seem I can fix them without some help. This is my sample CoffeeScript file, in /src folder :
#Animal.coffee
class Animal
constructor: (@name) ->
move: (meters) ->
console.log @name + " moved #{meters}m."
class Snake extends Animal
move: ->
console.log "Slithering..."
super 5
class Horse extends Animal
move: ->
console.log "Galloping..."
super 45
#module.exports = new Snake()
module.exports.Snake = Snake
And this is the CoffeeScript Unit Test in /Tests folder :
#AnimalTest.coffee
should = require 'should'
{ Snake } = require "../src/Animal"
describe 'sample', ->
it 'should pass', ->
snake = new Snake "Venomous python"
snake.should.be.an.instanceOf(Snake)
I have installed all these libraries globally. So when I execute this command through command line (Windows 7) :
Desktop>mocha --compilerscoffee:coffee-script/register Tests
It throws me this error:
desktop\Tests\sampleTest.coffee:15
snake.should.be.an.instanceOf(Snake);
^
ReferenceError: snake is not defined
at Object.<anonymous> (c:\users\ap\desktop\Tests\AnimalTest.coffee:8:3)
at Object.<anonymous> (c:\users\ap\desktop\Tests\AnimalTest.coffee:2:1)
at Module._compile (module.js:456:26)
at Object.loadFile (C:\Users\ap\AppData\Roaming\npm\node_modules\coffee-sc
ript\lib\coffee-script\register.js:16:19)
at Module.load (C:\Users\ap\AppData\Roaming\npm\node_modules\coffee-script
\lib\coffee-script\register.js:45:36)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib\mocha.js:172:27
at Array.forEach (native)
at Mocha.loadFiles (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib
\mocha.js:169:14)
at Mocha.run (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib\mocha
.js:356:31)
at Object.<anonymous> (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\
bin\_mocha:359:16)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
I am using CoffeeScript version 1.7.1, Mocha version 1.18.2 and Node version 0.10.26. I have tried looking everywhere and tried all combinations between the tests, but I cannot figure out for my life how to make it create the objects successfully and run the test.
For reference, I tried these, of all other combinations :
Requiring CoffeeScript file from within another CoffeeScript file with nodejs
How to check for class inheritance in Coffeescript Mocha Test?
Can someone point out what could possibly be wrong?
Update 1: Modified everything as pointed by dule, but now I get this error:
module.js:340
throw err;
^
Error: Cannot find module 'should'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (C:\Users\ap\Desktop\Tests\AnimalTest.coffee:2:11)
at Object.<anonymous> (C:\Users\ap\Desktop\Tests\AnimalTest.coffee:2:1)
at Module._compile (module.js:456:26)
at Object.loadFile (C:\Users\ap\AppData\Roaming\npm\node_modules\coffee-sc
ript\lib\coffee-script\register.js:16:19)
at Module.load (C:\Users\ap\AppData\Roaming\npm\node_modules\coffee-script
\lib\coffee-script\register.js:45:36)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib\mocha.js:172:27
at Array.forEach (native)
at Mocha.loadFiles (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib
\mocha.js:169:14)
at Mocha.run (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib\mocha
.js:356:31)
at Object.<anonymous> (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\
bin\_mocha:359:16)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
Update 2: I made the following changes to the AnimalTest script and the test passed.
should = require ("../npm/node_modules/should/should")
{ Snake } = require ("../src/Animal.coffee")
describe 'sample', ->
it 'should pass', ->
console.log(new Snake "Venomous python")
However, for some reason, creating an object and saving it for use, still fails. And I get the same snake not defined
error.