我想对以下方法进行单元测试:

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中的值?那将使他们与众不同。

10-07 20:18