2012-08-31 8 views
7

Estoy usando Autofixture como fábrica de SUT y tengo dificultades para congelar instancias nulas.Cómo puedo congelar una instancia nula en AutoFixture

me gustaría hacer algo como:

_fixture.Freeze<IPayPalConfiguration>(c => null); 

pero rápidamente di cuenta de que estaba equivocado. He solucionado el problema al usar esto:

_fixture.Inject((IMyInterface)null); 

pero no parece correcto.

Esperemos que alguien contribuya con la solución correcta para HiveMind.

Respuesta

6

Internamente, Freeze crea una instancia del tipo solicitado (por ejemplo IPayPalConfiguration) y luego se inyecta que por lo que siempre devolverá esa instancia cuando usted lo solicite de nuevo.

En ese caso particular, al hacer _fixture.Inject((IPayPalConfiguration)null) se inyecta la referencia nula manualmente, por lo que omite la parte de creación del método Freeze. Usted congelar el IPayPalConfiguration a un solo valor (en realidad, una referencia nula aquí) pero de una manera manual.

Tenga en cuenta que este _fixture.Freeze<IPayPalConfiguration>(c => null) pasa una referencia nula para el método que tratará de resolver el IPayPalConfiguration y por esa razón se produce una ArgumentNullException.

+0

Gracias por los comentarios, y al menos la confirmación de que no estoy haciendo lo incorrecto –

Cuestiones relacionadas