單元測試 – 隔離框架Substitute.For

STUB的功能

這邊是NSubstitute的說明:http://nsubstitute.github.io/help/getting-started/
Substitute是.NET裡的一個隔離框架,若要使用,需要額外在測試專案用NUGET去安裝NSubstitute

1. 動態產生假物件
2. 模擬回傳值
3. 測試監聽事件
4. 驗證傳入參數是否正確

使用Subsitute(Sub)
使用方法如下

設定呼叫某個方法應該回傳的值

下面可以驗證是否Add這個FUNC有被呼叫到

下面的程式能夠判別傳入的參數是不是正確

驗證回傳值是否正確

使用Substitute來針對不同狀況實作假介面


這是一個用MOCK方法的範例

上面做法有什麼問題?

  • 每一個不同的依賴案例就要製作一個不同的FakeObject,會讓寫測試的時間太久
  • 沒辦法直接從程式碼知道為什麼這樣會是Vaild

動態產生物件的使用完整範例

定義假物件行為(stub)

驗證某個函數是否被呼叫

使用mock object assertion
需求:驗證是非法的時候要記一個log

不要用太多mock就算要使用要避免過度指定,也就是當prod code小小變動就導致測試程式壞掉

下面的程式碼可以驗證當呼叫SyncBookOrders()時是不是會呼叫Insert這個函數兩次:

驗證傳入參數

驗證傳入的參數是否包含某些關鍵字

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *