[英]If using LINQ For Queries, Do We Need to Unit-Test Sorting?
我的服務層的接口上有以下兩種方法:
ICollection<T> FindAll<T>(Expression<Func<T, bool>> predicate) where T : Post;
ICollection<T> FindAll<T,TKey>(Expression<Func<T, bool>> predicate, OrderingOptions<T,TKey> orderingOptions) where T : Post;
它們極為相似。
第一個(基本上)是這樣做的:
return repository
.Find()
.OfType<T>()
.Where(predicate)
.Take(maxRows)
.ToList();
第二個(基本上)執行此操作:
return repository
.Find()
.OfType<T>()
.Where(predicate)
.WithOrdering(orderingOptions)
.Take(maxRows)
.ToList();
WithOrdering
是我創建的管道擴展方法:
public static IOrderedQueryable<T> WithOrdering<T,TKey>(this IQueryable<T> source, OrderingOptions<T,TKey> postOrderingOptions)
{
return postOrderingOptions.SortAscending
? source.OrderBy(postOrderingOptions.OrderingKey)
: source.OrderByDescending(postOrderingOptions.OrderingKey);
}
OrderingOptions<T,TKey>
是我實現以提供流暢排序的通用類。
所以,話雖這么說-我對第一種方法有很多單元測試(確保返回了集合,確保為空集合返回了null,確保正確過濾,確保返回了最大行,等等)。
但是我的問題是-我如何測試第二種方法? 我需要兩個嗎? 鑒於唯一不同的是im使用.OrderBy(或.OrderByDescending)方法。
如果我正在測試,我是否只是在測試LINQ框架?
如果沒有,我什至可以對此進行測試?
幾個要點(可能很重要):
指導/最佳做法將不勝感激。
謝謝!
您需要對第二種方法進行單元測試,以確保它可以工作。 如果您重構某些東西來改變它的工作方式並修復第一個,那么您如何知道是否忘記修復第二個呢? 如果重構WithOrdering
,您將如何知道事情仍然有效? 我將有一個單元測試來測試升序,一個單元測試來測試降序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.