Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

193
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda