2010-06-06 5 views
0

Может ли кто-нибудь предоставить образцы/указатели стратегии/кода для проверки Captcha validations + Authlogic с использованием Shoulda, Factory Girl и Mocha?Тесты контроллеров Rails для Captcha с использованием Shoulda, Factory Girl, Mocha

Например, мой UsersController что-то вроде:

class UsersController < ApplicationController 
validates_captcha 

... 
def create 
... 
if captcha_validated? 
     # code to deal with user attributes 
end 
... 
end 

В этом случае, как вы издеваться/окурок с помощью Shoulda/Factory Girl/Mocha для тестирования действительных и недействительных ответов на изображении Captcha?

Цените вашу помощь, Шиву

ответ

0

Я думаю, что это зависит, где captcha_validated? определена, но вы хотите, чтобы дразнить его возвращаемое значение, а затем писать тесты для каждого конкретного случая. Что-то вроде этого:

describe UsersController, "POST create" do 
    context "valid captcha" do 
    before do 
     SomeCaptchaObject.expects(:captcha_validated?).returns(true) 
    end 
    # ... 
    end 
    context "invalid captcha" do 
    before do 
     SomeCaptchaObject.expects(:captcha_validated?).returns(false) 
    end 
    # ... 
    end 
end 
+0

Спасибо rspeicher, что «captcha_validated?» является частью плагиной Captcha и определяются, как показано ниже: модуля ValidatesCaptcha Защиту self.included (основание) base.extend (методы класс) концевых модуль методов класса Защиты validates_captcha хелпер CaptchaHelper включает ValidatesCaptcha :: InstanceMethods конец конец модуль InstanceMethods def captcha_validated? CaptchaUtil :: encrypt_string (PARAMS [: CAPTCHA] .to_s.gsub (»», '') .downcase) == Титулы [: captcha_validation] конца конца конца Я постараюсь ваше предложение и доложить. Еще раз спасибо - Шива – Siva

0

Я был в состоянии решить с помощью этой установки:

class UsersControllerTest < ActionController::TestCase 

    context "create action" do 

    context "valid user with valid captcha" do 

     setup do 
     User.any_instance.stubs(:valid?).returns(true) 
     @controller.stubs(:captcha_validated?).returns(true) 

     post :create, :user => Factory.attributes_for(:user, :captcha => "blahblah") 
     end 

     should_redirect_to("user home") { user_path(@user) } 
    end 

    context "valid user with invalid captcha" do 
     setup do 

     User.any_instance.stubs(:valid?).returns(true) 
     @controller.stubs(:captcha_validated?).returns(false) 

     post :create, :user => Factory.attributes_for(:user, :captcha => "blahblah") 
     end 

     should_render_template :new 

    end 
    end 
end 

Спасибо.

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

  • Нет связанных вопросов^_^