【发布时间】:2021-01-31 10:36:05
【问题描述】:
我必须模拟两个指向同一个集合的聚合管道方法。
下面的示例代码
private void GetMethod()
{
var result1 = databaseContext.GetCollection<SampleCollection>("SampleCollection")
.Aggregate<SampleModel>(aggregateQuery, new AggregateOptions { AllowDiskUse = true }).ToList();
var result2 = databaseContext.GetCollection<SampleCollection>("SampleCollection")
.Aggregate<SampleModel>(aggregateQuery, new AggregateOptions { AllowDiskUse = true }).ToList();
}
下面是我尝试模拟集合的代码。
List<SampleModel> models = new List<SampleModel>
{
new SampleModel
{
Quarter = 20141,
Type = "AA",
PaidAmount = 100
},
new SampleModel
{
Quarter = 20141,
Type = "BB",
PaidAmount = 200
}
};
var mockMongoCollection = new Mock<IMongoCollection<SampleCollection>>();
var mockCursor = new Mock<IAsyncCursor<SampleModel>>();
mockCursor.Setup(x => x.Current).Returns(models);
mockCursor.SetupSequence(x => x.MoveNext(It.IsAny<CancellationToken>())).Returns(true).Returns(false);
mockMongoCollection.SetupSequence(x => x.Aggregate(It.IsAny<PipelineDefinition<SampleCollection, SampleModel>>(), It.IsAny<AggregateOptions>(), It.IsAny<CancellationToken>()))
.Returns(mockCursor.Object);
this.mockDbContext.Setup(x => x.GetCollection<SampleCollection>(It.IsAny<string>()))
.Returns(mockMongoCollection.Object);
如何为每个聚合模拟和设置不同的结果? .我尝试的模拟代码仅适用于第一个聚合查询。
【问题讨论】:
-
不要使用它。
IsAny?并为特定选项提供不同的结果 -
任何示例?
标签: mongodb unit-testing mocking moq