現在の日付/時刻の値を提供する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; };
}
3 つのメソッドすべてをスタブ化する必要がないように、メソッドをスタブ化し、他の 2 つ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 の基本的な概念的な機能ですか? これら 2 つのGetDate
/メソッドを削除して/の使用Time
法をインライン化できることはわかっていますが、これが可能かどうかを理解したいと思います。.Date
.TimeOfDay