Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

197
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!