簡體   English   中英

如何對RuntimeType進行單元測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM