文本不会出现在Capybara中,但会出现在开发环境中

时间:2017-07-18 19:58:51

标签: ruby-on-rails tdd capybara

我正在研究一个示例应用程序来练习TDD。我有以下测试:

scenario 'without an author' do
  create_post("RULEZ")
  expect(page).to have_content("Author can't be blank")
end

其中create post位于帮助文件中:

  def create_post(body, author = nil)
    visit '/posts/new'
    fill_in 'post[body]', with: body
    select author, from: 'post[author]' if author
    click_on 'Create Post'
  end

因此,如果我手动遵循此流程,如果我遗漏了作者,我会收到“作者不能为空”的错误消息。然而,当Capybara做同样的事情时,身体验证显示但作者验证没有(通过使用save_and_open_page通过Launchy gem验证)。

这是我的作者模型:

class Post < ApplicationRecord
  validates :body, presence: true, length: { minimum: 7 }
  validates :author, presence: true
end

以下是我显示验证错误的方法:

  def create
    @post = Post.new(post_params)
    if @post.valid?
      @post.save
      redirect_to root_url
    else
      flash[:errors] = @post.errors.full_messages
      render :new
    end
  end

在我的application.html.erb中:

  <body>
    <% if flash[:errors] %>
      <% flash[:errors].each do |error| %>
        <%= error %>
        <br />
      <% end %>
    <% end %>
    <%= yield %>
  </body>

有没有人遇到过类似的事情?

0 个答案:

没有答案