如何为服务类创建单元测试?

时间:2017-06-28 13:31:43

标签: c# unit-testing moq

我有这个服务类代码:

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上的单元测试重复。

任何第三种解决方案?

0 个答案:

没有答案