Модульное тестирование с использованием асинхронного кода Mocha+PhantomJS

Я новичок в модульном тестировании, поэтому, пожалуйста, простите меня, если мой вопрос может быть глупым. Я написал модульный тест, используя Mocha с PhantomJS и Chai в качестве библиотеки утверждений. Код, который я хочу проверить, является следующей функцией:

function speakingNotification(audioStream){
  var options = {};
  var speechEvents = hark(audioStream, options);

  speechEvents.on('speaking', function() {
    return 'speaking';
  });

  speechEvents.on('stopped_speaking', function() {
    return 'stopped_speaking';
  });
}

Как вы можете видеть, он принимает параметр audioStream в качестве входных данных, а затем использует библиотеку hark.js https://github.com/otalk/hark для обнаружения речевых событий. Функция должна вернуться, если пользователь говорит или нет.

Поэтому я написал следующий тестовый модуль:

describe('Testing speaking notification', function () {
    describe('Sender', function(){

        var audio = document.createElement('audio');
        audio.src = 'data:audio/mp3;base64,//OkVA...'; //audio file with sound

        var noAudio = document.createElement('audio');
        noAudio.src = 'data:audio/mp3;base64,...';  //audio file with no sound

        it('should have a function named "speakingNotification"', function() {
            expect(speakingNotification).to.be.a('function');
        });

        it('speaking event', function () {
            var a = speakingNotification(audio);
            this.timeout( 10000 );
            expect(a).to.equal('speaking');
        });

        it('stoppedSpeaking event', function () {
            var a = speakingNotification(noAudio);
            this.timeout( 10000 );
            expect(a).to.equal('stopped_speaking');
        });

    });
});

Тест не пройден и показывает:

 AssertionError: expected undefined to equal 'speaking'

 AssertionError: expected undefined to equal 'stopped_speaking'

Я также попытался использовать метод done(), установленный по тайм-ауту, однако тест не пройден и показывает:

ReferenceError: Can't find variable: done

Я искал учебники, но я могу найти только простые примеры, которые не помогают. Как я могу написать правильный тест?

0 ответов

Другие вопросы по тегам