C# 在NUnit测试中,如何模拟宇宙定义DB
我有以下方法:我想要使用模拟对象进行单元测试C# 在NUnit测试中,如何模拟宇宙定义DB,c#,unit-testing,mocking,nunit,C#,Unit Testing,Mocking,Nunit,我有以下方法:我想要使用模拟对象进行单元测试 public async Task<List<PppLeadModel>> GetLeadsForEmailChain(bool isQaMode) { var currentDateTime = DateTime.UtcNow; var linqQuery = _container.GetItemLinqQueryable<PppLeadModel>(allowS
public async Task<List<PppLeadModel>> GetLeadsForEmailChain(bool isQaMode)
{
var currentDateTime = DateTime.UtcNow;
var linqQuery = _container.GetItemLinqQueryable<PppLeadModel>(allowSynchronousQueryExecution: true)
.Where(x => x.IsQaMode == isQaMode && x.CreatedDate <= currentDateTime.AddMinutes(-60) && x.UserRegistered == false &&
(!x.Email1Sent || //Email 1
(x.Email1Sent &&
((!x.Sms1Sent && x.Email1SentDate <= currentDateTime.AddDays(-1)) || //Sms 1
(!x.Email2Sent && x.Email1SentDate <= currentDateTime.AddDays(-2)))) || //Email 2
(x.Email2Sent &&
((!x.Sms2Sent && x.Email2SentDate <= currentDateTime.AddDays(-1)) || //Sms 2
(!x.Email3Sent && x.Email2SentDate <= currentDateTime.AddDays(-3)))) || //Email 3
(x.Email3Sent &&
!x.Sms3Sent && x.Email3SentDate <= currentDateTime.AddDays(-1)))); //Sms 3;
var query = _container.GetItemQueryIterator<PppLeadModel>(linqQuery.ToQueryDefinition());
var results = new List<PppLeadModel>();
while (query.HasMoreResults)
{
var response = await query.ReadNextAsync().ConfigureAwait(false);
results.AddRange(response.ToList());
}
return results.ToList();
}
public异步任务GetLeadsForEmailChain(bool-isQaMode)
{
var currentDateTime=DateTime.UtcNow;
var linqQuery=_container.GetItemLinqQueryable(allowSynchronousQueryExecution:true)
其中(x=>x.IsQaMode==IsQaMode&&x.CreatedDate
[Test]
public void GetLeadsForEmailChainReturnsOK()
{
//Arrange
bool isQaMode = true;
_containerMock.Setup(c => c.GetItemLinqQueryable<PppLeadModel>(It.IsAny<bool>(), null, null))
.Returns(_pppleadmodellist.AsQueryable() as IOrderedQueryable<PppLeadModel>);
var feedResponseMock = new Mock<FeedResponse<PppLeadModel>>();
feedResponseMock.Setup(x => x.GetEnumerator()).Returns(_pppleadmodellist.AsQueryable().GetEnumerator());
var feedIteratorMock = new Mock<FeedIterator<PppLeadModel>>();
feedIteratorMock.Setup(f => f.HasMoreResults).Returns(true);
feedIteratorMock.Setup(f => f.ReadNextAsync(It.IsAny<CancellationToken>()))
.ReturnsAsync(feedResponseMock.Object)
.Callback(() => feedIteratorMock
.Setup(f => f.HasMoreResults)
.Returns(false));
_containerMock.Setup(c => c.GetItemQueryIterator<PppLeadModel>(It.IsAny<QueryDefinition>(), null, null))
.Returns(feedIteratorMock.Object)
.Callback(() =>
feedIteratorMock
.Setup(f => f.HasMoreResults)
.Returns(true));
_pppLeadRepo = new PppLeadRepo(_cosmosDbRepoMock.Object, dataBaseName, containerName);
//Act
var response = _pppLeadRepo.GetLeadsForEmailChain(isQaMode).Result;
//Assert
response.Should().BeEquivalentTo(_pppleadmodellist);
}