2015-10-22 7 views
6

Pracuję nad projektem, który wykorzystuje węzeł i staramy się osiągnąć 100% pokrycia naszych funkcji. Jest to jedyna funkcja, której nie przetestowaliśmy i znajduje się w innej funkcji.Jak przetestować funkcję dzielenia danych węzła

var userInput = ""; 
    req.on("data", function(data){ 
     userInput += data; 
    }); 

Jak testujesz tę funkcję? Próbowaliśmy wyeksportować funkcję z innego pliku, ale bez powodzenia.

Powinienem wspomnieć, że używamy taśmy jako modułu testowego.

Odpowiedz

0

Musisz wywołać to zdarzenie "data" na żądanie. Aby wywołanie to zostało wywołane.

Na przykład, załóżmy, masz req na teście, można zrobić coś takiego (to Mocha):

req.trigger('data', 'sampleData'); 
expect(userInput).to.equal('sampleData'); 
+0

Powinienem wspomnieć, że używam taśmy do przetestowania. Czy myślisz, że będzie działać w podobny sposób, niezależnie od tego? –

+0

Tak, myślę, że tak. Czy możesz przetestować następujące rzeczy: '' 'req.emit ('data', 'sampleData'); console.log (userInput); '' 'i zobacz, czy wypisze 'sampleData' - w przeciwnym wypadku wypróbuj sugestię z @eljefedelrodeodeljefe –

0

req.emit('data', {sampleData: 'wrongOrRightSampleDataHere'}) powinno wystarczyć. Podczas tworzenia obiektu http lub w związku z tym obiektu req upewnij się, że utworzyłeś nowy, że żaden inny test nie otrzymuje tego zdarzenia.

Aby być bardziej kompletnej ...

var assert = require('assert') 
function test() { 
    var hasBeenCalledAtLeastOnce = false 
    var userInput = ""; 
    // req must be defined somewhere though 
    req.on("data", function(data){ 
     userInput += data; 

     if(hasBeenCalledAtLeastOnce) { 
      assert.equal(userInput, "HelloWorld", "userInput is in fact 'HelloWorld'") 
     } 
     hasBeenCalledAtLeastOnce = true 
    }); 

    req.emit('data', "Hello") 
    req.emit('data', "World") 

} 

test()