我有以下代码,我正在尝试模拟它,但我的单元测试失败。
代码:
await _someDataRepository.GetSomeDataAsync(false)
.Where(r => r.Code == statusCode)
.FirstOrDefault();
素:
Mock<SomeDataRepository> _someDataRepositoryMock = new Mock<SomeDataRepository>();
_someDataRepositoryMock.Setup(s => s.GetSomeDataAsync(It.IsAny<bool>()))
.Returns<List<Domain.Student.Entities.SectionRegistrationStatusItem>>(
i => Task.FromResult(
i.Where(sr => sr.Code == It.IsAny<string>())
)
);
我如何模拟链式陈述?
答案 0 :(得分:1)
作为评论中的mentioend,您无法模仿Item
和/或Where
。您要模拟FirstOrDefault
并让_someDataRepository.GetSomeDataAsync(false)
处理从Where
返回的数据。
不幸的是我没有测试过这段代码,但它可能会给你一些灵感:
GetSomeDataAsync
或者如果您使用的是Moq 4.2或更高版本
_someDataRepositoryMock.Setup(s => s.GetSomeDataAsync(It.IsAny<bool>()))
.Returns(Task.FromResult(Your data here, i.e. List<Domain.Student.Entities.SectionRegistrationStatusItem>));