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

196
Visualizações
¿Cómo hacer que cualquier creación de instancia sea falsa (FakeItEasy)?

Tengo este bloque de código que me gustaría probar

 class SearchEngine { public void Search() { var module = new SearchModule(); module.Search(); } }

Lo he simplificado pero no puedo proporcionar una instancia de searchmodule como parámetro de la función Search , ni como parámetro constructor de la clase SearchEngine .

¿Hay alguna manera de asegurar que el objeto del module sea falso cuando escribo la prueba de mi unidad?

Me gustaría poder hacer algunas verificaciones de CallTo en el objeto del módulo, en particular, ese module.Search() Se llamó a Search() cuando llamamos a Search()

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

0

¿Hay alguna manera de asegurar que el objeto del módulo sea falso cuando escribo la prueba de mi unidad?

No, no es posible, al menos no con la forma actual de su código. FakeItEasy no puede interceptar la creación de instancias usando new .

Si desea falsificar algo, debe proporcionarlo de alguna manera al sistema bajo prueba. El SUT no puede crearlo por sí mismo.

No puedo proporcionar una instancia de módulo de búsqueda como parámetro de la función Search , ni como parámetro constructor de la clase SearchEngine

¿Podría inyectar una fábrica en su lugar? Algo como esto:

 public interface ISearchModuleFactory { SearchModule Create(); } class SearchEngine { private readonly ISearchModuleFactory _searchModuleFactory; public SearchEngine(ISearchModuleFactory searchModuleFactory) { _searchModuleFactory = searchModuleFactory; } public void Search() { var module = _searchModuleFactory.Create(); module.Search(); } }

A continuación, podría probar SearchEngine de esta manera:

 // Arrange var factory = A.Fake<ISearchModuleFactory>(); var module = A.Fake<SearchModule>(); A.CallTo(() => factory.Create()).Returns(module); var searchEngine = new SearchEngine(factory); // Act searchEngine.Search(); // Assert A.CallTo(() => module.Search()).MustHaveHappened();
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