[小菜一碟] 對 ASP.NET MVC ModelBinder 做單元測試

軟體廚房開始推出小菜一碟系列,這系列的篇幅不長,但是裡面都會有一言以蔽之的重點,像這篇就是在講我們自訂了一個 ModelBinder,它要怎麼做單元測試?

我們拿[料理佳餚] ASP.NET MVC 自訂 ModelBinder 將宣告為抽象型別的參數反序列化這篇的例子來看一下。

Arrange

指定的受測對象就是我們的 CustomerModelBinderBindModel 方法,在 BindModel 方法裡面需要兩個參數 ControllerContextModelBindingContext,因此我們要打造出來給 BindModel 方法使用。

ControllerContext 我們用 NSubstitute mock 出來,而 ModelBindingContext 我們直接 new 出來即可,然後裡面指定 ModelMetadata。

接下來是受測內容 ControllerContext.HttpContext.Request.InputStream,裡面實際的內容是 Customer 序列化後的資料。

最後把 CustomerModelBinder new 起來,這樣受測對象及受測內容就準備完成了。

Act

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

Assert

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

 < Source Code >

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學