我正在研究一个示例应用程序来练习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>
有没有人遇到过类似的事情?