2010-02-26 4 views
4

В настоящее время мои пользователи ControlTest не работают, потому что я использую verify_recaptcha в UserController # create. Как я могу написать свои тесты таким образом, чтобы известный хороший ответ CAPTCHA передавался с параметрами [: user]? Я использую reCAPTCHA, но я полагаю, что этот вопрос применим к любой реализации CAPTCHA.Rails Функциональный тест с использованием Recaptcha

Вот мои UsersController # создать

def create 
    @user = User.new(params[:user])  
    if verify_recaptcha(@user) && @user.save 
    flash[:notice] = "Account registered!" 
    redirect_to new_order_url 
    else 
    flash.now[:error] = "Account not registered!" 
    render :action => :new 
    end 
end 

и вот мой функциональный тест

test "should create user" do 
    assert_difference('User.count') do 
     post :create, :user => { :login => "jdoe", 
           :password => "secret", 
           :password_confirmation => "secret", 
           :first_name => 'john', 
           :last_name => 'doe', 
           :address1 => '123 Main St.', 
           :city => 'Anytown', 
           :state => 'XY', 
           :zip => '99999', 
           :country => 'United States', 
           :email => '[email protected]' } 
    end 
end 

Этот тест не так

4) Failure: 
test_should_create_user(UsersControllerTest) 
    [(eval):3:in `each_with_index' 
    /test/functional/users_controller_test.rb:15:in `test_should_create_user']: 
"User.count" didn't change by 1. 
<3> expected but was 
<2>. 

ответ

5

Попробуйте использовать flexmock или мокко, чтобы все экземпляры verify_recaptcha return true:

Эта линия в моем приложении сделали создать тест пройти без проблем на моем приложении:

flexmock(User).new_instances.should_receive(:verify_recaptcha).and_return(true) 

Если добавить эту строку перед происходит оно должно работать действие «создать».

Кроме того, я не пробовал этот ReCaptcha плагин, но это также может быть полезным для вас: http://www.fromdelhi.com/2006/07/21/rails-captcha-and-testing-using-mock-objects/

Смежные вопросы