2012-11-27 11 views
6

Ich bin neu bei node.js und dem Framework Mocha für Komponententests, aber ich habe ein paar Tests in der Cloud9 IDE erstellt, nur um zu sehen, wie es funktioniert. Der Code sieht wie folgt aus:Warnung "undeclared Variable" in Mocha Tests in Cloud9

var assert = require("assert"); 
require("should"); 

describe('Array', function(){ 
    describe('#indexOf()', function(){ 
    it('should return -1 when the value is not present', function(){ 
     assert.equal(-1, [1,2,3].indexOf(5)); 
     assert.equal(-1, [1,2,3].indexOf(0)); 
    }); 
    }); 
}); 

describe('Array', function(){ 
    describe('#indexOf()', function(){ 
    it('should return the index when the value is present', function(){ 
     assert.equal(1, [1,2,3].indexOf(2)); 
     assert.equal(0, [1,2,3].indexOf(1)); 
     assert.equal(2, [1,2,3].indexOf(3)); 
    }); 
    }); 
}); 

Die Tests funktionieren, wenn ich Mokka in der Konsole geben, aber die IDE zeigen Warnungen in den Zeilen, in denen „beschreiben“ und „es“, weil er sagt, dass der Variable nicht gewesen deklariert ("nicht deklarierte Variable").

Ich frage mich, was soll ich tun diese Tests, um die Warnungen zu vermeiden.

Danke.

Antwort

0

Das ist, weil mocha "ausführbar" Ihren Test in require s hüllt benötigt Mokka Funktionen (describe und it). Werfen Sie einen Blick auf mocha und _mocha in Ihrem Verzeichnis node_modules/mocha/bin.

Auf der anderen Seite cloud9 versucht, alle Symbole mit einer reinen node ausführbare auflösen, so dass Sie require alles von Hand.

+0

Also was soll ich von Hand benötigen? Weil ich versucht habe, var mocha = require ("mocha") zu machen; und ändern Sie den Code in mocha.describe ... und die Warnungen verschwinden, aber beim Ausführen von Mocha schlägt es fehl. – Juanillo

+0

@Juanillo Ich bin mir nicht sicher, dass es dafür einen einfachen Workaround gibt. Sie können cloud9 zwingen, Ihre Mocha-Tests auszuführen, aber das löst das Problem nicht deklarierter Variablen nicht. – soulcheck

+0

ok, danke, ich war neugierig, und da ich Neuling auf dieser Plattform bin, habe ich mich gefragt, ob die erfahrenen Programmierer in diesem Fall etwas tun. Aber es scheint, dass andere reale Projekte Mocha mit ähnlichen Codes verwenden. Vielleicht ignorieren sie einfach die Warnungen während der Arbeit in Cloud9, obwohl es für mich wirklich überraschend ist, dass ein Code mit Warnungen in wirklich ernsthaften Projekten gegeben werden kann. – Juanillo

2

In cloud9 können Sie am Anfang der Datei einen Hinweis für globals als Kommentar hinzufügen und die Warnungen entfernen. z.B.

**/* global describe it before */** 

var expect = require('chai').expect; 


describe('Array', function(){ 
    describe('#indexOf()', function(){ 
    it('should return -1 when the value is not present', function(){ 
     expect(true).to.equal(true); 
    }) 
    }) 
}) 
+0

Ich denke, dass die richtige Syntax ist '/ * global beschreiben es vor * /'. Siehe auch http://stackoverflow.com/a/19572515/209727 –