0

単体テストは初めてなので、質問がばかげているかもしれませんが、ご容赦ください。PhantomJS と Chai をアサーション ライブラリとして Mocha を使用して単体テストを作成しました。テストしたいコードは次の関数です。

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

チュートリアルを検索しましたが、役に立たない簡単な例しか見つかりません。どうすれば正しいテストを書くことができますか?

4

0 に答える 0