Попытка модульного тестирования следующей функции обновления MongoDb в C#.
var update = Builders<InvestorMongoDao>.Update
.Set(x => x.EmailAddress, command.EmailAddress);
await this.myDatabase.Users
.UpdateOneAsync(x => x.UserId == userId), update)
.ConfigureAwait(false);
Я могу легко проверить, вызывается ли эта функция с помощью универсального c фильтра:
this.mockCollection
.Verify(x => x.UpdateOneAsync(It.IsAny<FilterDefinition<MyDao>>(),
It.IsAny<UpdateDefinition<MyDao>>(),
It.IsAny<UpdateOptions>(),
It.IsAny<CancellationToken>()));
Однако я хочу попробовать и убедиться, что он вызывается с ожидаемым параметром. Я не могу найти способ извлечь параметр, который я хочу проверить из FilterDefinition. Я пробовал это:
var foo = Builders<MyDao>.Filter.Eq("UserId", expectedUserId);
this.mockCollection
.Verify(x => x.UpdateOneAsync(It.Is<FilterDefinition<MyDao>>(a => a == foo),
It.IsAny<UpdateDefinition<MyDao>>(),
It.IsAny<UpdateOptions>(),
It.IsAny<CancellationToken>()));
Но тест утверждает, что вызов не выполняется. Что я делаю не так?