开发者

Rails by Example Tutorial Request Examples and Capybara

In the Rails on Rails Tutorial by Michael Hartl, the Request Examples make assertions on the response. I installe开发者_如何转开发d the cabybara and steak gem to create acceptance tests. After installing capybara, the requests examples are configured to use capybara. capybara examples have a different syntax and don't recognize the response.

How do I reset the Request Examples to run as RSpec example?

Test Error:

4) Users signup failure should not make a new user  
    Failure/Error: click_button  
    wrong number of arguments (0 for 1)  
    # ./spec/requests/users_spec.rb:13  
    # ./spec/requests/users_spec.rb:7 

Request Example

describe "failure" do  
    it "should not make a new user" do  
        lambda do  
            visit signup_path  
            fill_in "Name", :with => ""  
            fill_in "Email", :with => ""  
            fill_in "Password", :with => ""  
            fill_in "Confirmation", :with => ""  
            click_button  
            response.should render_template('users/new')  
        end.should_not change(User, :count)  
    end
end


This might have something to do with rspec-rails request_example_group.rb.

request_example_group.rb

If the capybara lines are commented out, then the Request Examples are not defaulted to capybara.

capybara do
   include Capybara
end

In the Acceptance examples, include capybara.

require File.expand_path(File.dirname(__FILE__) + '/acceptance_helper')

feature "This Is My First Feature", %q{
    In order to ...
    As a ...
    I want to ...
} do

    include Capybara
    scenario "Scenario name" do
        visit signup_path
        fill_in "Name", :with => ""
        fill_in "Email", :with => ""
        fill_in "Password", :with => ""
        fill_in "Confirmation", :with => ""
        click_button "Sign up"
        page.has_content?('welcome to the sample app')
    end
end

I ended up forking rspec-rails and commenting out the capybara lines. In the Gemfile, the gem installed from the fork.

Why bother? We want both white box and black box testing.


As you correctly point out in your answer, rspec-rails will include Capybara if it is installed. I think they're assuming that it never hurts to include Capybara, just in case you need it. Is that a problem for you? In other words, what specifically is the Capybara DSL conflicting with?

(This might be also be worth bringing up on the RSpec mailing list.)

As for the error you posted, it seems that you are simply missing an argument to the click_button method.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜