2016年9月16日 星期五

練習題 - 使用 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

 

以上

沒有留言:

張貼留言

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。