У меня есть интерфейс 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.
Я пробовал следующее, но это не работает:
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 as PaymentTransaction)
в методе, который я тестирую (поскольку он принимает только PaymentTransaction, а не ITransaction, я тоже не могу его изменить), отладчик показывает нулевую ссылку для времени входа и выхода.
Мне было интересно, может ли кто-нибудь помочь мне, пожалуйста.
Спасибо в ожидании.