Utknąłem z problemem podczas testowania moich kontrolerów za pomocą RSpec - wywołanie response.body zawsze zwraca pusty ciąg. W przeglądarce wszystko renderuje się poprawnie, a testy funkcji ogórka wydają się działać poprawnie, ale RSpec za każdym razem zawodzi.
Inne oczekiwania dotyczące obiektu odpowiedzi, takie jak response.should render_template('index')
przejście bez żadnych problemów.
Czy ktoś z was napotkał wcześniej ten problem? Może odpowiedź html można uzyskać w inny sposób?
Jeśli chodzi o wersje, Rails 2.1.0, RSpec 1.2.7.
źródło
RSpec 2+: Jeśli chcesz sprawdzić koniec do końca - adres URL do treści odpowiedzi - użyj specyfikacji żądania zamiast specyfikacji kontrolera .
źródło
Kiedy pracowałem z podobnym problemem (który doprowadził mnie do tego pytania), przyszło mi do głowy, że istnieją różne sposoby skórowania tego samego kota. Innymi słowy, zamiast sprawdzać tekst podstawowy, możesz być w stanie sprawdzić zawartość flasha.
może być równoważnym czekiem:
Wydaje mi się, że ta ostatnia wydaje się nieco bardziej elastyczna, ponieważ będzie działać w obie strony, ale może nie być odpowiednia we wszystkich przypadkach.
Twoje zdrowie,
Jan
źródło
Domyślnie konfiguracja RSpec-rails wyłącza renderowanie szablonów specyfikacji kontrolera
Jednym ze sposobów rozwiązania tego problemu jest włączenie tego
render_views
ustawienia wrails_helper.rb
pliku. W ten sposób sprawisz, że będzie on działał globalnie we wszystkich testach.Lub użyj deklaracji render_views dla indywidualnej grupy:
Możesz przeczytać więcej na ten temat tutaj .
źródło