2012-11-27 8 views
6

Jestem nowy w węźle node.js i ramie Mokka do testowania jednostkowego, ale stworzyłem kilka testów w ID9 w Cloud9 tylko po to, aby zobaczyć, jak to działa. Kod wygląda następująco:Ostrzeżenie "niezadeklarowana zmienna" w testach Mokka w 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)); 
    }); 
    }); 
}); 

Testy działać, jeśli I typu mokka w konsoli, ale IDE pokazuje ostrzeżenia w linii gdzie „opisują” i „ona” to dlatego, że mówi, że zmienna nie została zadeklarowana ("niezadeklarowana zmienna").

Zastanawiam się, co powinienem zrobić, aby uniknąć ostrzeżeń.

Dzięki.

Odpowiedz

0

To dlatego mocha "wykonywalny" owija swój test w require s potrzebne do korzystania z funkcji mokka (describe i it). Spójrz na mocha i _mocha w swoim katalogu node_modules/mocha/bin.

Z drugiej strony, cloud9 próbuje rozwiązać wszystkie symbole przy użyciu czystego pliku wykonywalnego node, więc musisz wszystko ręcznie, require.

+0

więc czego powinienem wymagać ręcznie? Ponieważ próbowałem zrobić var ​​mocha = require ("mocha"); i zmień kod na mocha.describe ... i ostrzeżenia znikną, ale podczas wykonywania mokki nie powiedzie się. – Juanillo

+0

@Juanillo Nie jestem pewien, czy istnieje łatwy sposób obejścia tego problemu. Możesz zmusić cloud9 do uruchomienia testów mokka, ale to nie rozwiązuje problemu niezadeklarowanych zmiennych. – soulcheck

+0

ok, dziękuję, byłem ciekawy tego i jako nowicjusz na tej platformie zastanawiałem się czy doświadczeni programiści robią coś w tym przypadku. Ale wydaje się, że inne prawdziwe projekty używają Mocha z podobnymi kodami. Być może po prostu ignorują ostrzeżenia podczas pracy w chmurze9, choć to naprawdę zaskakujące, że kod można podać z ostrzeżeniami w naprawdę poważnych projektach. – Juanillo

2

W chmurze9 można dodać podpowiedź do globów jako komentarz u góry pliku, co spowoduje usunięcie ostrzeżeń. np.

**/* 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

Myślę, że poprawna składnia to '/ * global opisz ją przed * /'. Zobacz także http://stackoverflow.com/a/19572515/209727 –