Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

600
Views
Pruebas de Ruby on Rails con asistentes de autorización de dispositivo, número incorrecto de argumentos en el asistente de prueba

Tengo un Rails Scaffold básico, todas las acciones del controlador están protegidas por un filtro que determina si el usuario actual es un administrador. En lugar de iniciar sesión con usuarios administradores y no administradores durante cada prueba del controlador, decidí crear un asistente que inicia sesión en un usuario y afirma una respuesta. Todas las pruebas del controlador funcionan correctamente, pero recibo un error de número incorrecto de argumentos en mis funciones auxiliares (que se muestran a continuación).

Fragmento del controlador:

 class QuotesController < ApplicationController before_action :set_quote, only: [:show, :edit, :update, :destroy] before_action :admin_filter # GET /quotes def index @quotes = Quote.all end #... rest of actions... private # Returns true if user is admin def is_admin? current_user.boss if user_signed_in? end # Redirect If not Admin def admin_filter redirect_to root_path unless is_admin? end end

Asistentes de prueba (reduce la redundancia de inicio y cierre de sesión de los usuarios):

 # test_helper.rb class ActiveSupport::TestCase include Devise::Test::IntegrationHelpers # Add more helper methods to be used by all tests here... module AuthTesting # compacts admin_access and unsigned_no_admin to one test def test_authorization(path, admin, non_admin) # Error @ this line, stacktrace ends admin_access(path, admin) unsigned_no_admin_no_access(path, non_admin) end # asserts redirect for not signed in/ non admin users def unsigned_no_admin_no_access(path, non_admin) get path assert_response :redirect sign_in non_admin get path assert_response :redirect sign_out non_admin end # Asserts that admin has access def boss_access(path, admin) sign_in admin get path assert_response :success sign_out admin # prevents test_access from having leftover signed in admin end end end

Fragmento de prueba (todas las acciones del controlador funcionan correctamente y pasan la prueba)

 class QuotesControllerTest < ActionDispatch::IntegrationTest include AuthTesting setup do @quote = quotes(:one) @admin = users :jack @non_admin = users :phil end test 'should get index only if admin' do test_authorization(quotes_path, @admin, @non_admin) # green end #... rest of test ... end

El error al ejecutar mi prueba:

 ERROR["test_authorization", #<Minitest::Reporters::Suite:0x00007f8f009fa7e0 @name="QuotesControllerTest">, 0.3059480000000008] test_authorization#QuotesControllerTest (0.31s) Minitest::UnexpectedError: ArgumentError: wrong number of arguments (given 0, expected 3) test/test_helper.rb:20:in `test_authorization'

¿Por qué recibo este error pero sigo teniendo todas mis pruebas funcionando correctamente? ¿No creé correctamente los asistentes de prueba?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

No empieces los nombres de tus métodos auxiliares con test_ .

Esta es una convención en Minitest: todo lo que comienza con test_ es una prueba. Y así se invocará como tal, sin argumentos.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!