2012-08-15 12 views
16

my_file_spec.rb:pone dentro método de prueba rspec

require 'spec_helper' 
require 'my_file' 

module M 
    describe C do 
    it 'should print everything' do 
     c = C.new 
     c.meth.should == "something" 
    end 
    end 
end 

my_file.rb:

module M 
    class C 
    puts "class TEXT" # label1 
    def meth 
    puts "method TEXT" # label2 
    return "something" 
    end 
    end 
end 

La salida es:

class TEXT 

M::C 
    should print everything 

Finished in 0.75 seconds 
1 example, 0 failures 

Y finalmente la pregunta: "¿Por qué wasn 't label2 - ("método TEXTO") impreso después de que se ejecutó la prueba? "

P.S. Ruby192, rspec2

+0

Acabo de intentarlo. "method TEXT" * fue * impreso en mi caso. – DNNX

Respuesta

28

Intente utilizar $stderr.puts "method TEXT". Esto funciona para mí Solo tenga en cuenta que se considera una mala práctica escribir pruebas que tengan resultados que deba examinar manualmente, pero supongo que ya sabe que ...

+1

Sí, eso funciona. Pero ninguno de 'puts',' logger.error' etc. no lo hace. Y me gustaría averiguar la razón si es posible dentro de mi ejemplo. – ted

+0

Supongo que tiene que ver con que stdout esté almacenado en la mayoría de los sistemas operativos. Si esta suposición es correcta, entonces agregar $ stdout.flush después de la línea de la que desea obtener el resultado debería ayudar. – davidrac

+1

No, el almacenamiento en búfer no es el motivo – ted

Cuestiones relacionadas