Tôi đã kế thừa một dự án nhỏ và muốn mở rộng nó và ổn định nó cùng một lúc bằng cách viết Bài kiểm tra đơn vị cho tất cả các mã mới mà tôi đang thêm. Lớp đầu tiên TypedAudioCreator
, tạo các tệp âm thanh và điều này hóa ra rất dễ dàng để kiểm tra đầu tiên và viết mã cho lần thứ hai.
Tuy nhiên, khi đến lúc viết TypedAudioPlayer
, tôi không biết làm thế nào tôi có thể kiểm tra nó. Đó là một lớp rất nhỏ tập trung vào những điều cơ bản của việc phát âm thanh:
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);
}
}
Tôi vẫn còn rất mới ở TDD, nhưng tôi nhận ra lợi ích của việc luyện tập và muốn thử và cải thiện nó. Tôi đã viết Code trước, không có bài kiểm tra nào ở đây, nhưng đó chỉ là tôi quá lười biếng để nghĩ đúng cách giải quyết TDD. Câu hỏi tôi có là, làm thế nào tôi có thể / kiểm tra lớp này?
audioFile.SoundPlayer
. Sau đó kiểm tra với giả này, và xác minh điều đó PlaySync
và Dispose
được gọi đúng nơi. Bạn cũng muốn có thể tiêm StartedPlayingHandler
và StoppedPlayingHandler
nếu có thể.