Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

614
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda