単体テストは初めてなので、質問がばかげているかもしれませんが、ご容赦ください。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
チュートリアルを検索しましたが、役に立たない簡単な例しか見つかりません。どうすれば正しいテストを書くことができますか?