練習題 - 使用 Fluent Assertions 驗證資料的排序

以往在針對方法的執行結果進行資料排序的驗證時,比較直接的做法就是取得 collection 的第一筆與最後一筆,然後再依據用什麼條件做排序去比較兩筆資料,例如使用日期為條件而且是由新到舊的排序,那麼第一筆資料必須要比最後一筆資料的日期還要新,大概是用這樣的方式做資料排序的驗證。

不過這樣的做法還蠻土砲的,所以就用 Fluent Assertions 所提供的方法來處理吧。

這邊會用到「輸出測試用資料的 CSV 檔案 - 使用 LINQPad, AutoMapper, CsvHelper」這一篇文章裡所匯出的 CSV 測試資料。

 

單元測試程式裡使用匯出到 CSV 檔案的測試資料

image

Product.cs

public class Product
{
    public int ProductID { get; set; }
 
    public string Name { get; set; }
 
    public string ProductNumber { get; set; }
 
    public bool MakeFlag { get; set; }
 
    public bool FinishedGoodsFlag { get; set; }
 
    public string Color { get; set; }
 
    public short SafetyStockLevel { get; set; }
 
    public short ReorderPoint { get; set; }
 
    public decimal StandardCost { get; set; }
 
    public decimal ListPrice { get; set; }
 
    public string Size { get; set; }
 
    public string SizeUnitMeasureCode { get; set; }
 
    public string WeightUnitMeasureCode { get; set; }
 
    public decimal? Weight { get; set; }
 
    public int DaysToManufacture { get; set; }
 
    public string ProductLine { get; set; }
 
    public string Class { get; set; }
 
    public string Style { get; set; }
 
    public int? ProductSubcategoryID { get; set; }
 
    public int? ProductModelID { get; set; }
 
    public DateTime SellStartDate { get; set; }
 
    public DateTime? SellEndDate { get; set; }
 
    public DateTime? DiscontinuedDate { get; set; }
 
    public Guid rowguid { get; set; }
 
    public DateTime ModifiedDate { get; set; }
}

 

很直接的做法

升冪排序的驗證

資料 collection 的第一筆資料應該會小於最後一筆

image

降冪排序的驗證

資料 collection 的第一筆資料應該會大於最後一筆

image

以上的做法好像也沒錯,但總覺得驗證性不太足夠,所以就改用 Fluent Assertios 所提供的方法。

 

Fluent Assertions

之前所寫的文章介紹「編寫單元測試時的好用輔助套件 - Fluent Assertions

https://github.com/dennisdoomen/fluentassertions/wiki#collections

image

這次會用到四個方法,分別為:

BeInAscendingOrder, NotBeAscendingOrder, BeInDescendingOrder, NotBeDescendingOrder

 

升冪排序的驗證

驗證 Product Collection 都是以 ProductID 做升冪排序,而且 ProductID 不是降冪排序,後者是以取出 ProdictID 的 collection 使用 int 型別的排序驗證

image

降冪排序的驗證

驗證 Product Collection 都是以 ProductID 做降冪排序,且 ProductID 不是升冪排序,後者是以取出 ProdictID 的 collection 使用 int 型別的排序驗證

image

 

測試執行結果

image

 

以上

純粹是在寫興趣的,用寫程式、寫文章來抒解工作壓力