我想对以下方法进行单元测试:
public void Upload(string identifier, Stream data)
{
var startTime = SystemTime.Now;
innerDataIntegrationInterface.Upload(identifier, data);
var endTime = SystemTime.Now;
TimeSpan totalUploadTime = endTime.Subtract(startTime);
float transferRate = data.Length / (float)(totalUploadTime.Seconds + totalUploadTime.Milliseconds);
m_log.Info(string.Format("Total uploading time for '{0}' was {1:00}.{2:000000} milliseconds transfered at {3} bytes/sec", identifier, totalUploadTime.Seconds, totalUploadTime.Milliseconds, transferRate));
}
基本上,我已经注入了SystemTime对象,因此可以在测试中对其进行设置,但是我不知道该怎么做,以使startTime和endTime变量获得不同的值,因此可以断言使用以下方法调用m_log.Info方法: totalUploadTime和transferRate变量的正确值。
任何想法,将不胜感激。
最佳答案
您能否使Mock SystemTime
对象增加它在Now
Getter中的值?那将使他们与众不同。