我知道我可以这样做:
IDateTimeFactory dtf = MockRepository.GenerateStub<IDateTimeFactory>();
dtf.Now = new DateTime();
DoStuff(dtf); // dtf.Now can be called arbitrary number of times, will always return the same value
dtf.Now = new DateTime()+new TimeSpan(0,1,0); // 1 minute later
DoStuff(dtf); //ditto from above
如果IDateTimeFactory.Now不是一个属性,而是一个方法IDateTimeFactory.GetNow(),我该怎么做呢?
根据下面 Judah 的建议,我重写了我的 SetDateTime 辅助方法,如下所示:
private void SetDateTime(DateTime dt) {
Expect.Call(_now_factory.GetNow()).Repeat.Any();
LastCall.Do((Func<DateTime>)delegate() { return dt; });
}
但它仍然会抛出“ICurrentDateTimeFactory.GetNow() 的结果;已经设置。” 错误。
再加上它仍然不能与存根一起工作......