2012-08-31 12 views
7

Używam funkcji Autofixture jako fabryki SUT i mam problemy z pomijaniem pustych instancji.Jak zatrzymać zamrożenie instancji o wartości zerowej w AutoFixture?

chciałbym zrobić coś takiego:

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

ale szybko zorientował się, że niesłusznie. Rozwiązałem ten problem:

_fixture.Inject((IMyInterface)null); 

, ale wydaje się to niewłaściwe.

Mam nadzieję, że ktoś wniesie poprawne rozwiązanie do HiveMind.

Odpowiedz

6

Wewnętrznie Freeze tworzy instancję żądanego typu (np IPayPalConfiguration), a następnie wstrzykujeto tak będzie zawsze wrócić do tego wystąpienia, gdy poprosisz go ponownie.

W tym konkretnym przypadku, wykonując _fixture.Inject((IPayPalConfiguration)null) wstrzyknąć referencję zerową ręcznie, pomijając część tworzenia metody Freeze. Ty zamroź z IPayPalConfiguration do pojedynczej wartości (w rzeczywistości tutaj odwołanie zerowe), ale w sposób ręczny.

Należy pamiętać, że ten _fixture.Freeze<IPayPalConfiguration>(c => null) przechodzi zerowy punkt odniesienia dla metodyże postara się rozwiązać IPayPalConfiguration i dlatego ArgumentNullException jest wyrzucany.

+0

Dzięki za opinie, a przynajmniej potwierdzenie, że nie robię niewłaściwych rzeczy –

Powiązane problemy