Rozumiem różnicę między imperative and declarative cucumber steps, ale nie widziałem żadnych rzeczywistych przykładów tego świata. Zawsze mam wrażenie, że moje pliki funkcji stają się zbyt szczegółowe.Jak pisać deklaratywne funkcje Ogórek do opisywania operacji CRUD?
Wydaje się, że musiałyby być cechą ogórek na każdym etapie cyklu życia:
foobars/list_foobars.feature
foobars/create_foobar.feature
foobars/view_foobar.feature
foobars/edit_foobar.feature
foobars/delete_foobar.feature
W samej tylko funkcji tworzenia, wydaje się, że chcesz wypisać listę pól, które można wprowadzić, które są wymagane, co dzieje się po wprowadzeniu nieprawidłowych danych, itp. Nie znam deklaratywnego sposobu wykonania to. Oczywiście w kolejnych funkcjach wystarczy powiedzieć: Given a foobar exists
, a nie przechodzić przez wszystkie etapy tworzenia.
Na ile szczegółowo opisujesz zachowanie aplikacji? Czy możesz podać kilka przykładów plików funkcji, które Twoim zdaniem są dostatecznie kompletne?
interesujący, dzięki! Pytanie uzupełniające: czy używasz funkcji ogórka do komunikowania logiki biznesowej? Dzięki jednemu krokowi zwanemu poprawnymi lub nieprawidłowymi danymi, wydaje się, że ukrywa ono zachowanie, które może być ważną logiką biznesową. Na przykład logika biznesowa może określić, które pola są wymagane, więc krok "Wypełnij wymagane pola" może nie komunikować się wystarczająco. Myśli? – Andrew
W niektórych przypadkach (np. W celu zachowania zgodności z obowiązującymi przepisami) istnieją uzasadnione powody biznesowe, by wymagać określonej dziedziny, ale często zdarza się, że gdy ktoś chce, aby to pole było przechowywane, istnieje inna historia (np. Chęć wysłania materiałów marketingowych za pośrednictwem poczty elektronicznej lub chcesz, aby użytkownicy mogli się logować przez e-mail). W tym ostatnim przypadku wymagane pole jest szczegółem implementacji, dlatego należy je przetestować w jednostce. W pierwszym przypadku możesz napisać test imperatywny, aby był konkretny, szczególnie jeśli używasz testów ogórka do komunikacji z właścicielem produktu. –
To nie odpowiada na pytanie. –