gpt4 book ai didi

c# - 使用最小起订量测试存储库查询

转载 作者:行者123 更新时间:2023-11-30 21:08:40 25 4
gpt4 key购买 nike

我正在为我的存储库编写单元测试,我需要使用委托(delegate)测试存储库方法。

首先来自存储库界面的部分

public interface IRepository<T>
{
...
IQueryable<T> All();
...
}

这是我要测试的方法。我将其作为 IRepository<RentDetails> 的扩展方法

public static bool AnyIntersectionForRoomWithDatesExists
(this IRepository<RentDetails> repository, Room room, DateTime startDate,
DateTime terminationDate)
{
var rent = repository.All().Where(
r =>
(r.BeginningDate <= startDate && r.TerminationDate > terminationDate &&
r.TerminationDate < terminationDate) ||
(r.BeginningDate > startDate) ||
(r.TerminationDate >= terminationDate && r.BeginningDate > startDate &&
r.BeginningDate < terminationDate));
}

在我的单元测试中,我创建了一个 IEnumerable<RentDetails>收藏

IEnumerable<RentDetails> rentDetailsColection = new List<RentDetails>
{
new RentDetails(TenantTestHelper.ValidTenant,roomMoq, new DateTime(2012, 1, 1),new DateTime(2012, 2, 1)),
new RentDetails(TenantTestHelper.ValidTenant,roomMoq, new DateTime(2012, 3, 1),new DateTime(2012, 7, 1)),
new RentDetails(TenantTestHelper.ValidTenant,roomMoq, new DateTime(2012, 10, 1),DateTime.MaxValue)
};

但我有一个问题如何设置存储库最小起订量?我尝试了以下

[Test]
var reqestStartDate = new DateTime(2012, 4, 1);
var requestTerminationDate = reqestStartDate.AddDays(30);

...

rentDetailsRepositoryMoq.Setup(c => c.All().Where(r =>
(r.BeginningDate <= reqestStartDate &&
r.TerminationDate > requestTerminationDate &&
r.TerminationDate < requestTerminationDate) ||
(r.BeginningDate > reqestStartDate) ||
(r.TerminationDate >= requestTerminationDate &&
r.BeginningDate > reqestStartDate &&
r.BeginningDate < requestTerminationDate)))
.Returns((IQueryable<RentDetails>)rentDetailsColection
.Where(r =>(r.BeginningDate <= reqestStartDate &&
r.TerminationDate > requestTerminationDate &&
r.TerminationDate < requestTerminationDate) ||
(r.BeginningDate > reqestStartDate) ||
(r.TerminationDate >= requestTerminationDate &&
r.BeginningDate > reqestStartDate && r.BeginningDate < requestTerminationDate)));

但是我有一个异常(exception)

NotSupportedException

Expression references a method that does not belong to the mocked object: c => c.All().Where(r => (((r.BeginningDate <= .reqestStartDate && r.TerminationDate > .requestTerminationDate) && r.TerminationDate < .requestTerminationDate) || r.BeginningDate > .reqestStartDate) || ((r.TerminationDate >= .requestTerminationDate && r.BeginningDate > .reqestStartDate) && r.BeginningDate < .requestTerminationDate))

最佳答案

只是Setup IRepository.All()返回 IQueryable<T>并断言被测单元正在做它应该做的事情。请注意,根据常规定义,您正在尝试 stub 存储库并且您将断言状态。

关于c# - 使用最小起订量测试存储库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9544538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com