Я думаю, что тесты просмотра Rspec беспорядочны, потому что ссылки, которые ищут тесты, не являются частью фактического представления, а являются заголовком макета приложения.Rails view Rspec тесты не оправдали ожиданий
К примеру, у меня есть следующий код: RSpec
describe 'signups/new.html.erb' do
before :each do
render template: "signups/new", layout: "layouts/application"
end
it 'displays link to request pages not signup page' do
rendered.should have_link("Make a new request", href: new_request_path)
rendered.should_not have_link("Add me to the mailing list", href: new_signup_path)
end
ошибка, что я получаю то, что ссылка «Добавить меня в список рассылки» был найден. Тем не менее, я уверяю вас, на локальном сервере это не так.
То, что происходит в окне ниже (опять же, это все из файла макеты/приложения, а не от подписок/новый):
<nav class="navbar navbar-inverse navbar-static-top" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="<%= root_path %>">Home</a>
<a class="navbar-brand" href="<%= new_request_path %>">Make a new request</a>
<% if current_page?(new_signup_path) == false %>
<a class="navbar-brand" href="<%= new_signup_path %>">Add me to the mailing list</a>
<% end %>
</div>
</div>
</nav>
В основном это If/Then о том, что, когда вы находитесь в на странице регистрации не отображается ссылка для отправки пользователей на страницу регистрации. Тем не менее Rspec указывает, что эта ссылка присутствует. Любые мысли о том, почему?
Я так думаю, что тест не интерполирует утверждение if/then, но не уверен, как это исправить.
Хм, что это делает? Прямо сейчас я попробовал это, и это заставило другую ошибку за неправильное количество аргументов. 1) signups/new.html.erb отображает ссылку для запроса страниц, а не на странице регистрации ← [31mFailure/Error: ← [0m ← [31mputs page.body rendered .should have_link («Сделать новый запрос», href: new_request_path) ← [0m ← [31mArgumentError ← [0m: ← [31mwrong количество аргументов (1 для 0) ← [0m ← [36m # ./spec /views/signups/new.html.erb_spec.rb:15:in 'block (2 уровня) в '← [0m' –
james
он должен быть в отдельной строке. Он поместит html страницы, на которой он включен. – Sean
Конечно, глупо меня. К сожалению, хотя я все еще получаю ту же ошибку: «1) signups/new.html.erb отображает ссылку на страницы запроса, а не страницу регистрации ← [31mFailure/Error: ← [0m ← [31mrendered.should_not has_link ("Добавить меня в m больной список", href: new_signup_path) ← [0m ← [31mCapybara :: ExpectationNotMet ← [0m: ← [31месяц не найти ссылку «Добавить меня в список рассылки», найти 1 matc h: "Добавить меня в список рассылки" ← [0m ← [36m # ./spec/views/signups/new.html.erb_spec.rb:17:in 'block (2 уровня) в '← [0m –
james