Как проверить функцию разбиения данных на узлы

Я работаю над проектом, который использует узел, и мы пытаемся достичь 100% покрытия наших функций. Это единственная функция, которую мы не тестировали, и она находится внутри другой функции.

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

Как вы проводите тестирование этой функции? Мы попытались экспортировать функцию из другого файла, но безуспешно.

Я должен отметить, что мы используем ленту в качестве модуля тестирования.

2 ответа

req.emit('data', {sampleData: 'wrongOrRightSampleDataHere'}) должен сделать это. При создании экземпляра http или, следовательно, req объект убедитесь, что вы создаете новый экземпляр, что никакой другой тест не получает это событие.

Чтобы быть более полным...

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()

Вы должны вызвать это событие "data" по требованию. Так что этот обратный вызов будет вызван.

Например, предположим, у вас есть req в вашем тесте вы могли бы сделать что-то подобное (это Мокко):

req.trigger('data', 'sampleData');
expect(userInput).to.equal('sampleData');
Другие вопросы по тегам