我正在使用 Rails 3.1.0 和来自here的 recaptcha gem 。我正在运行一个黄瓜测试,检查用户是否可以注册。注册需要用户填写验证码。我知道我的测试没有触及验证码:
When /^I create a new account with email: "(.*?)" and password: "(.*?)"$/ do |email, pw|
click_link "Sign up"
fill_in "Email", :with => email
fill_in "Password", :with => pw
fill_in "Password confirmation", :with => pw
click_button "Sign up"
end
但测试仍然通过。我通过验证页面上是否存在成功注册消息并且使用此步骤不存在重新验证失败消息来检查成功:
Then /^I should (not )?see "(.*)"$/ do |negate, text|
if negate
page.should_not have_content text
else
page.should have_content text
end
end
该控制器与此处建议的第一个控制器几乎相同。
class RegistrationsController < Devise::RegistrationsController
def create
if verify_recaptcha
super
else
build_resource
clean_up_passwords(resource)
flash.now[:alert] = "There was an error with the recaptcha code below. Please re-enter the code."
flash.delete :recaptcha_error
render :new
end
end
end
recaptcha 在测试环境中不起作用有什么原因吗?它似乎在开发中运行良好。