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?
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:
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: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.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.