为什么我的测试不适用于此表单?

时间:2011-09-27 13:39:11

标签: ruby-on-rails-3 testing selenium rspec capybara

在Firefox中,如果我尝试提交没有标题的帖子,我会收到: 1错误禁止保存此帖子

但是当我进行测试时。这是一个不同的故事。

我的帖子模型有validates_presence_of :title。我的测试看起来像:

require 'spec_helper'

describe 'Users' do

  it 'registered users should not be able to post without a title', :js => true do
    user = Factory(:user)
    visit new_post_path
    current_path.should eq(new_post_path)

    fill_in 'post[markdown_description]', :with => 'Bar'
    click_on 'Submit your post'

    page.should have_content('error')
  end

end

顺便说一下,我正在使用Selenium(:js => true),因为我的提交按钮实际上是一些JS的锚链接。基本上,当单击链接时,JS会触发要提交的表单。

Rspec返回:

Running: spec/requests/users_spec.rb
F

Failures:

  1) Users registered users should be able to post
     Failure/Error: page.should have_content('error')
       expected there to be content "error" in ""
     # ./spec/requests/users_spec.rb:13:in `block (2 levels) in <top (required)>'

Finished in 7.9 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/requests/users_spec.rb:4 # Users registered users should be able to post

1 个答案:

答案 0 :(得分:0)

如果您有before_filters,请求可能无法进入控制器操作。检查日志以确保发布了正确的参数,并且操作未重定向。

另一种选择是将其包含在您的规范中:

click_on 'Submit your post'
save_and_open_page

在浏览器中打开当前页面,以便您可以看到实际呈现的内容。