Je rate quelque chose d'évident ici avec Mocha et Coffeescript/Javascript.
J'ai un fichier dans /static/js/
appelé ss.coffee
C'est très simple, une seule fonction :
function sortRowCol(a, b) {
if (a.r == b.r)
if (a.c == b.c)
return 0;
else if (a.c > b.c)
return 1;
else return -1;
else if (a.r > b.r)
return 1;
else return -1;
}
La fonction fonctionne correctement, mais j'ai décidé que je devais commencer à tester ce projet aujourd'hui, donc j'ai mis un fichier de test mocha :
require "../static/js/ss.coffee"
chai = require 'chai'
chai.should()
describe 'SS', ->
describe '#sortRowCol(a,b)', ->
it 'should have a sorting function', ->
f = sortRowCol
debugger
console.log 'checking sort row'
f.should.not.equal(null, "didn't find the sortRowCol function")
describe 'sortRowCol(a, b)', ->
it 'should return -1 when first row is less than second', ->
a = {r: 2, c: "A"}
b = {r: 1, c: "A"}
r = sortRowCol a, b
r.should.equal(-1, "didn't get the correct value")
Quelque chose ne va pas, car mes résultats le sont :
$ mocha --compilers coffee:coffee-script ./test/ss.coffee -R spec
SS
#sortRowCol(a,b)
1) should have a sorting function
sortRowCol(a, b)
2) should return -1 when first row is less than second
× 2 of 2 tests failed:
1) SS #sortRowCol(a,b) should have a sorting function:
ReferenceError: sortRowCol is not defined
Il trouve le fichier correctement, car il affichera le message d'erreur "Cannot find module" si je change ce nom en un nom de fichier inexistant.
J'ai essayé de changer sortRowCol(a,b)
a #sortRowCol(a, b)
et vice versa, n'a pas aidé. La documentation ( lien ) n'explique pas vraiment ce que ce # fait là, est-ce juste un idiome ruby qui est là pour une raison quelconque ?
Il doit y avoir un problème dans la façon dont je fais référence au fichier ss.coffee, mais je ne le vois pas.