1. 程式人生 > 其它 >dotnet 單元測試 Mock 讓一個物件繼承多個介面

dotnet 單元測試 Mock 讓一個物件繼承多個介面

技術標籤: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 ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。如有任何疑問,請與我聯絡。