軟體廚房開始推出小菜一碟系列,這系列的篇幅不長,但是裡面都會有一言以蔽之的重點,像這篇就是在講我們自訂了一個 ModelBinder,它要怎麼做單元測試?
我們拿[料理佳餚] ASP.NET MVC 自訂 ModelBinder 將宣告為抽象型別的參數反序列化這篇的例子來看一下。
Arrange
指定的受測對象就是我們的 CustomerModelBinder 的 BindModel 方法,在 BindModel 方法裡面需要兩個參數 ControllerContext、ModelBindingContext,因此我們要打造出來給 BindModel 方法使用。
ControllerContext 我們用 NSubstitute mock 出來,而 ModelBindingContext 我們直接 new 出來即可,然後裡面指定 ModelMetadata。

接下來是受測內容 ControllerContext.HttpContext.Request.InputStream,裡面實際的內容是 Customer 序列化後的資料。
最後把 CustomerModelBinder new 起來,這樣受測對象及受測內容就準備完成了。

Act
執行指定的受測對象 CustomerModelBinder.BindModel 方法,把回傳結果指定給 actual 變數。

Assert
驗證受測對象回傳的結果是否如我們預期的那樣,我用 FluentAssertions 來操作 Assert。

< Source Code >
