আমি একটি ছোট প্রকল্প উত্তরাধিকার সূত্রে পেয়েছি এবং আমি যুক্ত করছি এমন সমস্ত নতুন কোডের জন্য ইউনিট টেস্ট লিখে এটি একই সাথে প্রসারিত করতে এবং এটি স্থিতিশীল করতে চাই। প্রথম শ্রেণি, TypedAudioCreator
অডিও ফাইল তৈরি করে এবং এটি প্রথম পরীক্ষা করা এবং দ্বিতীয়টির জন্য কোড লেখার পক্ষে খুব সহজ ছিল।
যাইহোক, যখন এটি লেখার সময় আসল TypedAudioPlayer
, আমি কীভাবে এটি পরীক্ষা করতে পারি তা আমার কোনও ধারণা ছিল না। এটি একটি খুব ছোট শ্রেণীর শব্দ বাজানোর খুব বেসিকগুলিকে কেন্দ্র করে:
public class TypedAudioFilePlayer
{
public event StartedPlayingHandler StartedPlaying;
public event StoppedPlayingHandler StoppedPlaying;
public readonly int TimeBetweenPlays;
private Queue<TypedAudioFile> _playlist = new Queue<TypedAudioFile>();
public TypedAudioFilePlayer(int timeBetweenPlays)
{
TimeBetweenPlays = timeBetweenPlays;
}
public void AddFile(TypedAudioFile file)
{
_playlist.Enqueue(file);
}
public void StartPlaying()
{
ThreadPool.QueueUserWorkItem(ignoredState =>
{
while (_playlist.Count > 0)
{
var audioFile = _playlist.Dequeue();
if (StartedPlaying != null)
StartedPlaying(audioFile);
audioFile.SoundPlayer.PlaySync();
audioFile.SoundPlayer.Dispose();
if (StoppedPlaying != null)
StoppedPlaying(audioFile);
}
});
}
public void StopPlaying()
{
if (StoppedPlaying != null)
StoppedPlaying(null);
}
}
আমি টিডিডিতে এখনও খুব নতুন, তবে আমি অনুশীলনের সুবিধাগুলি বুঝতে পারি এবং এটিতে আরও চেষ্টা করে দেখতে চাই। আমি কোডটি প্রথমে লিখেছি, এখানে কোনও পরীক্ষা নেই, তবে এটি সমাধানের টিডিডি পদ্ধতিটি সঠিকভাবে চিন্তা করতে আমার খুব অলস ছিল। আমার কাছে প্রশ্নটি হল, আমি কীভাবে এই ক্লাসটি পরীক্ষা করতে পারি?
audioFile.SoundPlayer
। তারপরে এই মোক নিয়ে পরীক্ষা করুন এবং তা যাচাই করুন PlaySync
এবং Dispose
সঠিক জায়গায় ডাকা হবে। আপনি যদি সম্ভব StartedPlayingHandler
হয় StoppedPlayingHandler
তবে ইঞ্জেকশন করতে সক্ষম হতেও চান ।