Mam ogórek, Ruby, projekt SitePrism, w którym używamy klejnotów "RSPEC", aby sprawdzić oczekiwania. Jest to włączone do naszego ENV.RB i pomyślnie użyte w definicjach kroku.

Teraz próbowałem dokonać pewnych stwierdzeń w klasie serwisu, ale otrzymuję błąd. Czy wiesz, jak mogłem użyć tych metod oczekiwania ()? Próbowałem z require 'rspec' plus include Rspec w pliku .rb, który określa klasę siteprism, ale nadal miałem ten sam błąd:

expect(local_value).to eq(@previous_value)
=> Error: NoMethodError: undefined method `expect' for #<xxx_Object @loaded=false>

Dziękuję Ci!

3
mickael 15 luty 2017, 15:08

2 odpowiedzi

Najlepsza odpowiedź

Jak odkryłeś (z twojego komentarza) możesz include RSpec::Matchers w klasie obiektu strony, aby uzyskać expect wraz z domyślnymi dopasowaniami RSPECS. Jeden z tych dopasowań nazywa się all, który następnie cieni Capybara :: DSL {X3}} Metoda, która wcześniej zawarta do obiektu i wytwarza błąd, który widzisz. Sposób, aby rozwiązać to, aby zadzwonić do wersji Capybara all na obiekcie Current_Session (page) lub alias "Find_all". Więc all(...).map(...) staje się

page.all(...).map(...) # Same as Capybara.current_session.all(...)...

Lub

find_all(...).map(...)  # or page.find_all ...
2
Thomas Walpole 15 luty 2017, 17:01

stare pytanie, ale zapewnienie odpowiedzi

Warto również wskazać, że przy instrukcjach README. Ogórek będzie miał funkcje testowania RSPEC załadowane do świata ogórka.

Zależny od tego, do kogo mówisz i gdzie; Jest preferowany (prawdopodobnie), aby wykonać wszystkie badania oparte na RSPEC z funkcji wewnątrz świata ogórka (tj. w Step_definitions).

Ponadto, co pozwala uniknąć, aby włączyć te elementy w dowolnym miejscu, a otrzymasz czyste kroki, takie jak expect(my_page.header_message.text).to eq('This')

Możesz również użyć dowolnej innej, włączyć automatyczne metody Capybara, które wykorzystałyby ukryte oczekiwania lub RSPEC auto-zawarte utworzone z metod w swojej klasie

1
Luke Hill 22 luty 2019, 14:02