Rails: «отсутствует частичное» при вызове render в тесте RSpec - PullRequest
5 голосов
/ 13 декабря 2010

Я пытаюсь проверить наличие формы.Я новичок в Rails.

Содержимое моего new.html.erb_spec.rb файла:

require 'spec_helper'

describe "messages/new.html.erb" do
  it "should render the form" do
    render '/messages/new.html.erb'
    reponse.should have_form_putting_to(@message) 
    with_submit_button
  end
end

Представление new.html.erb имеет код:

<%= form_for(@message) do |f| %>
  <%= f.label :msg %> <br />
  <%= f.text_area :msg %>
  <%= f.submit "Submit" %>
<% end %>

Когда я запускаю rspec, происходит сбой следующим образом:

1) messages/new.html.erb should render the form

 Failure/Error: render '/messages/new.html.erb'

   Missing partial /messages/new.html with {:handlers=>[:erb, :rjs,:builder,:rhtml, :rxml], :formats=>[:html,:text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json], :locale=>[:en, :en]} in view paths "/Users/tristanmartin/whisperme/app/views"

   # ./spec/views/messages/new.html.erb_spec.rb:5:in `block (2 levels) in <top (required)>'

Кто-нибудь знает, в чем проблема?

Спасибо!

Ответы [ 3 ]

6 голосов
/ 15 декабря 2010

не приводите аргументов для 'render'. попробуйте следующее

require 'spec_helper'

describe "messages/new.html.erb" do
  it "should render the form" do
    render
    rendered.should contain('blablabla') 
  end
end
1 голос
/ 14 февраля 2011

Я столкнулся с подобной проблемой и был удивлен, узнав, что Rspec делает впечатляющий вывод из аргумента description.Например:

require 'spec_helper'

describe "bills/payments/edit.html.erb" do
  it "Renders payment form" do
    assign(:payment, stub_model(Payment))
    render
  end
end

Из-за некоторых эволюционных имен контроллеров / представлений этот тест изначально имел:

describe "bills/payment/edit.html.erb" do

, который действительно все испортил, и даже если я установил:рендеринга, не удалось найти ссылочный частичный.Исправление пути в операторе описания исправило все это.

1 голос
/ 20 декабря 2010

У меня возникла та же проблема, и я опишу, что я сделал, чтобы решить эту проблему, если вы еще не нашли решение. Я думаю, что проблема в том, что rspec сообщает об ошибке, вводящей в заблуждение. Настоящая ошибка в другом.

Я узнал об этом, изменив строку на:

render :template => "messages/new.html.erb"

Это позволило выявить фактическую ошибку. В моем случае я не устанавливал требуемую переменную (и), которые я исправил.

Как только вы правильно установили присваивания, спецификация работала правильно.

Тогда вы можете вернуться к:

render "messages/new.html.erb"

или даже просто

render

оба будут работать. Отсутствующая проблема с шаблоном должна быть удалена. По крайней мере, это для меня. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...