私はこのようなインターフェースを持っています...
public interface ITempFileNameBuilder
{
string DirectoryPath { get; }
string FileName { get; }
void GenerateNewFileName();
}
...そして、プロパティを新しいものGenerateNewFileName
に設定するようにメソッドをモックしたいと思います。2つの実装のように宣言されているため、インターフェイスに定義FileName
がないのは明らかなので、これは奇妙な要求であることを私は知っています。私はそれをしたので、あなたはプロパティを何か新しいものに設定するために呼び出す必要があります。set
private set;
GenerateNewFileName
FileName
これは可能ですか?
編集
これが私がテストしようとしている作業単位です。
public void StartRecording(string claimNo, string ip_no, string ip_name, IWaveIn input, Stream writer)
{
if (this.IsRecording)
{
return;
}
if (_input != null)
{
_input.Dispose();
}
_input = input;
_input.WaveFormat = _waveFormat;
_input.DataAvailable += (s, args) =>
{
_writer.Write(args.Buffer, 0, args.BytesRecorded);
byte[] buffer = args.Buffer;
for (int index = 0; index < args.BytesRecorded; index += 2)
{
short sample = (short)((buffer[index + 1] << 8) | buffer[index + 0]);
float sample32 = sample / 32768f;
_aggregator.Add(sample32);
}
OnDataAvailable(args);
};
_input.RecordingStopped += (s, args) =>
{
_input.Dispose();
_writer.Dispose();
OnRecordingStopped(args);
};
if (this.CurrentRecording != null)
{
_tempFileNameBuilder.GenerateNewFileName();
}
this.Recordings.Add(new RecordingTrack(claimNo, ip_no, ip_name,
_tempFileNameBuilder.FileName,
_recordingDeployer,
_recordingCompressor));
if (this.MicrophoneLevel == default(float))
{
this.MicrophoneLevel = .75f;
}
_aggregator.Reset();
_writer = writer;
_input.StartRecording();
this.IsRecording = true;
}
そして、この単体テストの目標はFileName
、CurrentRecording
とLastRecording
が実際に異なることを確認することです。これは、以前に発見したバグに基づく回帰テストです。FileName
のプロパティが設定されRecordingTrack
ておらず、インスタンスから電流を返すだけであったため、バグが発生していました。そのため、それが呼び出されたことを確認し、レコーディングトラックののセットが呼び出されたことを確認します。FileName
ITempFileNameBuilder
GenerateNewFileName
TempFileName
ただし、上のセットもプライベートであり、コンストラクターで実行されるため、これは実際には単体テストではなく、統合テストではないでしょうか。TempFileName
RecordingTrack