在Michael Hartl的Rails on Rails教程中,请求示例对响应进行断言。我安装了cabybara和牛排宝石来创建验收测试。安装capybara后,请求示例配置为使用capybara。水豚示例具有不同的语法,无法识别响应 如何重置请求示例以RSpec示例运行?
测试错误:
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
答案 0 :(得分:0)
这可能与rspec-rails 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中,从fork安装的gem。
为什么要这么麻烦?我们想要白盒和黑盒测试。
答案 1 :(得分:0)
正如您在答案中正确指出的那样,如果安装了rspec-rails将include Capybara
。我认为他们假设include
Capybara永远不会伤害,以防你需要它。这对你来说有问题吗?换句话说,Capybara DSL具体与什么冲突?
(这可能也值得提及RSpec mailing list。)
至于您发布的错误,您似乎只是错过了click_button
方法的参数。