dotnet 單元測試 Mock 讓一個物件繼承多個介面
阿新 • • 發佈:2021-01-30
技術標籤:c#C#dotnet單元測試Mockdotnet core
在使用 Mock 的時候,可以設定一個 Mock 的物件繼承多個介面,而不需要自己定義一個介面去繼承其他的多個介面
這個算是 Mock 的高階的玩法了,在 Mock 的官方文件有說到,可以使用 As 的方法,給 Mock 的物件加入其他的介面繼承
如下面程式碼,我有兩個介面,定義如下
public interface IF1
{
}
public interface IF2
{
}
此時我想要定義一個 Mock 的物件,讓這個物件繼承上面這兩個沒有繼承關係的介面,此時的程式碼可以如下
var mock = new Mock<IF1>();
mock.As<IF2>();
嘗試判斷一下,可以看到拿到的物件是繼承兩個介面
Assert.IsInstanceOfType(f, typeof(IF1));
Assert.IsInstanceOfType(f, typeof(IF2));
也就是說如果有多個介面需要繼承,只需要加上 As 方法,在裡面傳入自己需要的介面就可以了
而呼叫 As 方法是有返回值的,通過此返回值就可以給介面設定呼叫的方法等
通過這樣的方法就不需要自己去定義一個介面分別繼承 Mock 需要繼承的介面,如下面程式碼
public interface IF3: IF1, IF2
{
}
本文程式碼放在 github 歡迎小夥伴訪問
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名林德熙(包含連結:http://blog.csdn.net/lindexi_gd ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。如有任何疑問,請與我聯絡。