次のようなインターフェイス ITransaction があります。
public interface ITransaction {
DateTime EntryTime { get; }
DateTime ExitTime { get; }
}
そして、次のような派生クラス PaymentTransaction があります。
public class PaymentTransaction : ITransaction {
public virtual DateTime LastPaymentTime
{
get { return DateTime.Now; }
}
#region ITransaction Members
public DateTime EntryTime
{
get { throw new NotImplementedException(); }
}
public DateTime ExitTime
{
get { throw new NotImplementedException(); }
}
#endregion
}
PaymentTransaction オブジェクトの 3 つのプロパティすべてをモックしたかったのです。
私は次のことを試しましたが、うまくいきません:
var mockedPayTxn = new Mock<PaymentTransaction>();
mockedPayTxn.SetUp(pt => pt.LastPaymentTime).Returns(DateTime.Now); // This works
var mockedTxn = mockedPayTxn.As<ITransaction>();
mockedTxn.SetUp(t => t.EntryTime).Returns(DateTime.Today);
mockedTxn.SetUp(t => t.ExitTime).Returns(DateTime.Today);
でも注射したら
(mockedTxn.Object は PaymentTransaction として)
私がテストしているメソッドでは (ITransaction ではなく PaymentTransaction のみを使用するため、変更することもできません)、デバッガーは開始時間と終了時間に対して null 参照を示します。
誰かが私を助けてくれるかどうか疑問に思っていました。
ありがとうございます。