tengo una ITransaction interfaz de la siguiente manera:miembros de C# que imita la interfaz de una clase concreta con Moq
public interface ITransaction {
DateTime EntryTime { get; }
DateTime ExitTime { get; }
}
y tengo una PaymentTransaction clase derivada de la siguiente manera:
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
}
yo quería burlarse de todo tres propiedades de PaymentTransaction Object.
He intentado lo siguiente, pero no funciona:
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);
pero cuando me inyecto
(mockedTxn.Object como PaymentTransaction)
en el método que estoy probando (como se solo toma una Transacción de pago y no una transacción IT, tampoco puedo cambiarla) el depurador muestra una referencia nula para la hora de entrada y la hora de salida.
Me preguntaba si alguien podría ayudarme, por favor.
Gracias de anticipación.
Entiendo que me estoy burlando de una clase concreta, pero dado el hecho de que los accesorios del tiempo de entrada y salida son los miembros de la interfaz y estoy lanzando mi objeto de burlas concretas a la interfaz, no debería necesitar virtualizar estos accesorios. Me preguntaba si había alguna otra forma de hacerlo. – Raghu
¿así que finalmente encontraste la respuesta? ¿Cómo lo hiciste? –