[英]How to Unit Testing RuntimeType
[Test]
// arrange
// ...
// act
var result = (Car) service.GetCar(req);
// assert
Assert.AreEqual(result, typeof(Car));
但我收到以下錯誤
Expected: <Models.Car> (Car)
But was: <Models.Car> (RuntimeType)
我試圖更改斷言以使用Is.InstanceOf
:
Assert.AreEqual(result, Is.InstanceOf<Car>());
但是這次我還是出錯
Expected: <Models.Car>
But was: <<instanceof Models.Car>>
您無需service.GetCar(req)
的結果。 這將工作:
var result = service.GetCar(req);
Assert.IsInstanceOf<Car>(result);
或者,作為替代,使用:
var result = service.GetCar(req);
Assert.That(result, Is.TypeOf<Car>());
以下表示您要比較對象和類型,而要比較對象的類型: Assert.AreEqual(result, typeof(Car));
您可以使用: Assert.AreEqual(result.GetType(), typeof(Car));
,但我不確定這是否行得通。
但是最好的選擇是嘗試轉換,如果轉換失敗,則失敗:
try
{
var result = (Car) service.GetCar(req);
}
catch (Exception ex)
{
Assert.Fail();
}
或者,您可以使用Assert.ThrowsException()
方法檢查是否拋出了異常,但與以前的方法一樣,它並不簡單。
Action action = () => { var result = (Car) service.GetCar(req); };
Assert.ThrowsException<Exception>(action);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.