Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

355
Visualizações
How do I Moq IFindFluent so this call to ToListAsync works?

I am unit testing a wrapper to the MongoDB C# driver. I have this line of code:

Collection.Find(predicate).ToListAsync();

Where Collection is of type IMongoCollection<T> and Find(predicate) returns an instance implementing IFindFluent<T, T>. ToListAsync() is an extension to turn the results into a list, I assume.

I am attempting to write unit tests, and I am stumped on handling this. I can't make a wrapper class because that's what I'm working on. I would prefer to either make it so ToListAsync() returns a created list OR to mock the Find() to return something that can be made a list of.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

If anyone would struggle with getting it to work, what I did to mock Find() method was:

[TestFixture]
class QueryControllerTests
{
    private IOptions<MongoSettings> _mongoSettings;
    private QueryController _queryController;
    private Mock<IFakeMongoCollection> _fakeMongoCollection;
    private Mock<IFindFluent<BsonDocument, BsonDocument>> _fakeCollectionResult;

    [OneTimeSetUp]
    public void Setup()
    {
        _fakeMongoCollection = new Mock<IFakeMongoCollection>();
        _fakeCollectionResult = new Mock<IFindFluent<BsonDocument, BsonDocument>>();

    }
}

where IFakeMongoCollection is:

public interface IFakeMongoCollection : IMongoCollection<BsonDocument>
{
    IFindFluent<BsonDocument, BsonDocument> Find(FilterDefinition<BsonDocument> filter, FindOptions options);
}
over 4 years ago · Santiago Trujillo Relatório

0

I wound up making a little abstraction layer for this, since I couldn't find anything suitable and asking for help yielded no answers.

I created an interface/implementation pair called AppCollection specifically to handle the MongoDB interface. IAppCollection would have a method for IAppCollection.ToList(predicate), and the AppCollection would run the Collection.Find(predicate).ToListAsync(); call, returning the list. Later, it was a trivial matter to mock the IAppCollection to make sure the right calls were being made. While I couldn't test the predicates in native LINQ, I could at least compile the predicates and compare them to passing/failing objects.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda