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);
    }