У меня есть класс 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, которую я не улавливаю в данный момент? Я знаю, что могу просто избавиться от этих двух _10 _ / _ 11_ методов и встроить использование _12 _ / _ 13_, но я хотел бы понять, возможно ли это вообще.