Naprawdę doceniam moc AutoFixture w połączeniu z teoriami XUnita. Niedawno przyjąłem użycie encapsulating customizations i udostępniłem je moim testom za pomocą atrybutu.Jak mogę zmodyfikować urządzenie, które mój niestandardowy atrybut danych teorii tworzy dla AutoFixture?
Potrzebuję jednorazowego scenariusza do przeprowadzenia testu. Kiedy używam AutoDomainDataAttribute, jak wyżej, czy mogę poprosić o IFixture i spodziewać się tego samego wystąpienia utworzonego przez atrybut?
W moim scenariuszu domyślnie używam trybu wielokrotnej personalizacji dla kolekcji itp. Jednak w tym przypadku chcę, aby tylko jeden element został wysłany do mojego konstruktora SUT. Tak więc zdefiniowałem moją metodę testowania w następujący sposób:
[Theory, AutoDomainData]
public void SomeTest(IFixture fixture) {
fixture.RepeatCount = 1;
var sut = fixture.CreateAnonymous<Product>();
...
}
Niestety, otrzymuję wyjątek podczas tworzenia anonimowego produktu. Inne testy działają dobrze, jeśli poproszę o produkt jako parametr metody z tymi atrybutami. Jest to tylko problem w tym konkretnym przypadku, w którym mam nadzieję, że parametr fixture jest taki sam, jak stworzony przez moją AutoDomainDataAttribute.
Konstruktor produktu oczekuje wartości IEnumerable, która zwykle zostanie wypełniona 3 elementami ze względu na modyfikacje, które mam na miejscu za pośrednictwem AutoDomainData. Obecnie moje DomainCustomization to CompositeCustomization składające się z MultipleCustomization i AutMoqCustomization, w tej kolejności.
Wyjątek: "InvalidCastException: nie można rzucić obiektu typu" Castle.Proxies.ObjectProxy ", aby wpisać" Produkt "."
Dziękuję, Mark. Natychmiast przeszedłem do trybu testu imperatywnego po zamieszczeniu tutaj. Dobrze jest jednak znać alternatywę. Wreszcie, moim szczególnym testem jest zapewnienie, że ostatniej kategorii nie można usunąć z produktu (musi być co najmniej jeden). To jest jedyny czas, w którym muszę kontrolować 'RepeatCount'. Dzięki jeszcze raz! – ventaur
Nie możesz po prostu usunąć kategorii.Count() - 1' przedmiotów jako część twojej konfiguracji testu, a następnie przetestowanych, że z tylko jedną lewą ręką, nie można było usunąć ostatniego? –
Tak, przypuszczam, że tak. Programiści czasami cierpią z powodu komplikacji. :-) – ventaur