我有这个服务类代码:
public class StaySearchManager
{
private readonly IPriceGridRepo _priceGridRepo;
public StaySearchManager(IPriceGridRepo priceGridRepo)
{
_priceGridRepo = priceGridRepo;
}
public async Task<IEnumerable<StaySearchResult>> Search(StaySearchParameter searchParameter)
{
if (!searchParameter.RoomIds.Any())
return new StaySearchResult[0];
PriceGrids[] grids = await _priceGridRepo.GetRoomPriceGrid(searchParameter.RoomIds);
return grids.Select(g => g.TryCreateStay(searchParameter)).Where(s => s != null).ToList();
}
}
我能够创建单元测试(使用moq)来检查: - 如果没有房间ID,那么我们将返回空结果 - 如果有一些房间ID,我们将使用好的参数
调用repo但是我如何对停留创建过程进行单元测试?
第一个解决方案是创建一个IPriceGrid itnerface然后模拟它,但它看起来像过度生成,因为这个接口只适用于单元测试。
第二个解决方案是进行交互测试,但它将与我在PriceGrid上的单元测试重复。
任何第三种解决方案?