我有一个看起来像这样的界面......
public interface ITempFileNameBuilder
{
string DirectoryPath { get; }
string FileName { get; }
void GenerateNewFileName();
}
...我想模拟该GenerateNewFileName
方法,以便将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
但是,on上的集合也是私有的,它是在构造函数中完成的,所以也许这不是真正的单元测试,而更像是集成测试?TempFileName
RecordingTrack