Как смоделировать модель с ошибками, используя RSpec - PullRequest
1 голос
/ 06 июня 2011

Я тестирую слой представления моего приложения Rails.

Это представление для модели Customer, где я вызываю ошибки для нее, например, так (хам):

- if @customer.errors.present?
  - flash[:warn] = ""
- @customer.errors.full_messages.each do |msg|
  - flash[:warn] += msg + "<br />"

= form_for :customer, :url => customer_registration_path do |f|
  - validated = resource.errors.any?
  .field{ :class => !validated ?  "" : (resource.errors.has_key?(:email) ? "failed" : "passed" )  }
    = f.text_field "email",   :placeholder => "почта", :autocomplete => "off"
    .status
  .field{ :class => !validated ?  "" : (resource.errors.has_key?(:password) ? "failed" : "passed" ) }
    = f.password_field "password", :placeholder => "пароль", :autocomplete => "off"
    .status
  .field{ :class => !validated ?  "" : (resource.errors.has_key?(:password_confirmation) ? "failed" : "passed" ) }
    = f.password_field "password_confirmation", :placeholder => "повторите пароль", :autocomplete => "off"
    .status
  = f.submit "" # Зарегистрироваться

Мне нужно проверить наличие, скажем, оболочки вокруг поля «email», помеченного как «не удалось».

Как написать макет для модели Customer, эмулируя наличие соответствующих ошибок?

1 Ответ

0 голосов
/ 08 июня 2011

Моя практика состоит в том, чтобы создавать настоящие недействительные объекты, а не фанат издеваться. Но если вы настаиваете:

it "should render errors" do
  @user = User.new
  @user[:errors][:email] = 'invalid'
  @view.stub!(:resource).and_return { @user }
  render
  ......
end

Кстати, я думаю, что большая часть создаваемой вами функциональности обеспечивается динамической формой: https://github.com/joelmoss/dynamic_form

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