[Test]
// arrange 
// ...
// act
var result = (Car) service.GetCar(req);

// assert
Assert.AreEqual(result, typeof(Car));  

Pero recibo el siguiente error

Expected: <Models.Car> (Car)    
But was:  <Models.Car> (RuntimeType)

Intenté cambiar la aserción para usar Is.InstanceOf:

Assert.AreEqual(result, Is.InstanceOf<Car>());

Pero sigo recibiendo un error, esta vez

Expected: <Models.Car>
But was:  <<instanceof Models.Car>>
0
user1765862 16 oct. 2018 a las 14:45

2 respuestas

La mejor respuesta

Lo siguiente significa que desea comparar el objeto y el tipo, mientras que desea comparar el tipo de objeto: Assert.AreEqual(result, typeof(Car));

Puedes usar: Assert.AreEqual(result.GetType(), typeof(Car));, pero no estoy segura de si esto funcionará.

Pero la mejor opción es probar la transmisión y fallar si la transmisión no es exitosa:

try
{
    var result = (Car) service.GetCar(req);
}
catch (Exception ex)
{
    Assert.Fail();
}

O podría usar el método Assert.ThrowsException() para verificar si se lanzó una excepción, pero no es sencillo, como el método anterior.

Action action = () => { var result = (Car) service.GetCar(req); };
Assert.ThrowsException<Exception>(action);
1
Michał Turczyn 16 oct. 2018 a las 11:56

No necesitas enviar el resultado de service.GetCar(req). Esto funcionaría:

var result = service.GetCar(req);

Assert.IsInstanceOf<Car>(result);

O, como alternativa, use:

var result = service.GetCar(req);

Assert.That(result, Is.TypeOf<Car>());
2
Rui Jarimba 16 oct. 2018 a las 11:57