【发布时间】:2010-12-20 08:15:28
【问题描述】:
我有一个TimeMachine 类,它为我提供当前日期/时间值。该类如下所示:
public class TimeMachine
{
public virtual DateTime GetCurrentDateTime(){ return DateTime.Now; };
public virtual DateTime GetCurrentDate(){ return GetCurrentDateTime().Date; };
public virtual TimeSpan GetCurrentTime(){ return GetCurrentDateTime().TimeOfDay; };
}
我想在我的测试中使用TimeMachine 存根,这样我就可以存根GetCurrentDateTime 方法,让其他两种方法使用存根GetCurrentDateTime 方法,因为我没有存根所有三种方法。我试着写这样的测试:
var time = MockRepository.GenerateStub<TimeMachine>();
time.Stub(x => x.GetCurrentDateTime())
.Return(new DateTime(2009, 11, 25, 12, 0, 0));
Assert.AreEqual(new DateTime(2009, 11, 25), time.GetCurrentDate());
但是测试失败了。 GetCurrentDate 返回 default(DateTime) 而不是在内部使用 GetCurrentDateTime 存根。
有没有什么方法可以用来实现这种行为,或者它只是我目前没有掌握的 RhinoMocks 的一些基本概念特征?我知道我可以摆脱这两个 GetDate/Time 方法并内联 .Date/.TimeOfDay 用法,但我想了解这是否可能。
【问题讨论】:
标签: c# mocking rhino-mocks stub