Я являюсь модульным тестом в моем классе, который внутренне вызывает драйвер FindAync драйвера MongoDb для получения документа.
Для каждого тестируемого метода я хочу убедиться, что встроенный в мой метод FilterDefinition правильно передан в метод FindAsync MongoDB.
Я настроил обратный вызов для перехвата пропущенного фильтра с помощью следующего кода:
var mockCursor = new Mock<IAsyncCursor<T>();
var mockMongoDbCollectionClient = new Mock<IMongoCollection<T>>();
mockMongoDbCollectionClient.Setup(o => o.FindAsync(It.IsAny<FilterDefinition<T>(), It.IsAny<FindOptions<T>(), It.IsAny<CancellationToken>()))
.Callback<FilterDefinition<T>, FindOptions<T>, CancellationToken>((f, o, t) =>
{
filter = f;
})
.ReturnsAsync(mockCursor.Object);
Но я не знаю, как проанализировать фильтр, чтобы убедиться, что это ожидаемый фильтр.
Например, если фильтр в моем тестируемом методе построен следующим образом:
var filter = Builders<T>.Filter.Eq("Type", "MyType")
Я бы проверил в своем UT, что переданный фильтр построен точно так же, как указано выше.