2011-02-17 22 views
0

在Michael Hartl的Rails on Rails教程中,請求示例對響應進行斷言。我安裝了cabybara和牛排寶石來創建驗收測試。安裝水豚後,請求示例配置爲使用水豚。水豚的例子有不同的語法,並且不能識別響應。
如何重置請求示例以RSpec示例運行?Rails by Example教程請求示例和水豚

測試錯誤:

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 

請求示例

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 
+1

請給我們一些代碼或錯誤。 – 2011-02-17 20:27:57

回答

0

這可能是與rspec的護欄request_example_group.rb。

request_example_group.rb

如果水豚線註釋,則請求實例並不默認爲水豚。

capybara do 
    include Capybara 
end 

在驗收示例中,包括水豚。

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 

我結束了分叉rspec-rails和評論水豚線。 在Gemfile中,從叉子安裝的gem。

爲什麼要麻煩?我們需要白盒和黑盒測試。

0

正如您在答案中正確指出的那樣,rspec-rails將在安裝後將include Capybara。我認爲他們認爲它從來不會傷害到水豚,以防萬一你需要它。這對你來說是一個問題嗎?換句話說,Capybara DSL有什麼特別的衝突?

(這可能是也值得在RSpec mailing list拉扯大。)

至於你張貼的錯誤,似乎你只是缺少一個參數傳遞給click_button方法。