私はこれができることを知っています:
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()である場合、どうすれば同じことを行うことができますか?
以下のユダの提案に従って、 SetDateTime ヘルパーメソッドを次のように書き直しました。
private void SetDateTime(DateTime dt) {
Expect.Call(_now_factory.GetNow()).Repeat.Any();
LastCall.Do((Func<DateTime>)delegate() { return dt; });
}
しかし、それでも「ICurrentDateTimeFactory.GetNow(); の結果は既にセットアップされています」がスローされます。エラー。
さらに、スタブではまだ機能しません....