es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Los bucles de Minitest devuelven una cantidad impar de afirmaciones.

El siguiente método de Minitest

def test_not_access
@bad_users.each do |user|
@actions.each do |action|
sign_in user
get action
assert_redirected_to root_path
end
end
end

está devolviendo 80 afirmaciones. Sin embargo, @bad_users es un array de 10 usuarios, y @actions es un array de 4. La configuración está dividida en dos bloques de configuración en test_helper.rb y en el propio archivo de prueba.
“`
setup do
@continent = continents(:one)
@bad<em>users = [ …. <em>en test</em>helper.rb</em>]
@actions = [continents<em>url, continent</em>url(@continent), new<em>continent</em>url, edit<em>continent</em>url(@continent)]
end</p>

“`
Por mis cálculos deberían generarse 40 afirmaciones. Así que o:
• la acción se está evaluando dos veces para su afirmación,
• la configuración que se divide entre dos archivos se ejecuta dos veces
• o, de manera improbable, está ocurriendo otra afirmación.

¿Cómo puedo verificar qué afirmaciones se están ejecutando efectivamente? Si la respuesta se encuentra en la segunda suposición, ¿cómo se puede rectificar?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para verificar qué afirmaciones se están ejecutando, puede agregar una variable de contador dentro del bucle para hacer un seguimiento del número de afirmaciones que se están ejecutando. Por ejemplo:

      def test_not_access
        counter = 0
        @bad_users.each do |user|
          @actions.each do |action|
            sign_in user
            get action
            assert_redirected_to root_path
            counter += 1
          end
        end
        puts "Número de afirmaciones ejecutadas: #{counter}"
      end
    

    Esto mostrará el número total de afirmaciones que se han ejecutado, que luego se pueden comparar con el número esperado de afirmaciones.

    Si la configuración se divide entre dos archivos y se ejecuta todo dos veces, puede intentar fusionar la configuración en un solo bloque de configuración en el archivo de prueba o en el archivo test_helper.rb. Esto asegurará que el código de configuración se ejecute solo una vez.

    Por ejemplo, puede mover la definición de @actions al archivo de prueba y fusionarlo con el otro código de configuración:

      setup do
        @bad_users = [ .... ]
        @continent = continents(:one)
        @actions = [continents_url, continent_url(@continent), new_continent_url, edit_continent_url(@continent)]
      end
    

    O si lo prefiere, puede mover todo el código de configuración al archivo test_helper.rb y eliminar el bloque setup del archivo de prueba por completo.

    # En test_helper.rb
    def setup
      @bad_users = [ .... ]
      @continent = continents(:one)
      @actions = [continents_url, continent_url(@continent), new_continent_url, edit_continent_url(@continent)]
    end
    
    # En el archivo de prueba, elimine el bloque de configuración
    

    Al hacer esto, el código de configuración se ejecutará solo una vez, lo que debería resultar en el número correcto de afirmaciones que se ejecutan.

Comments are closed.