2012-08-15 2 views
16

my_file_spec.rb :

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 :

class TEXT 

M::C 
    should print everything 

Finished in 0.75 seconds 
1 example, 0 failures 

그리고 마지막 질문 :

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

출력은 "왜 얻지 못한 테스트가 실행 된 후에 label2 - ("메소드 텍스트")가 인쇄되지 않습니까? "

P. Ruby192, rspec2

+0

방금 ​​해 보았습니다. 필자의 경우 "method TEXT"*가 인쇄되었습니다. – DNNX

답변

28

$stderr.puts "method TEXT"을 사용해보세요. 이것은 나를 위해 작동합니다. 수동으로 검사해야 할 출력이있는 테스트를 작성하는 것은 나쁜 습관으로 간주되지만, 이미 알고있는 것 같아요.

+1

예, 작동합니다. 그러나'puts','logger.error' 등은 없습니다. 그리고 가능한 한 내 이유를 찾아 내고 싶습니다. – ted

+0

나는 그것이 대부분의 OS에서 버퍼링되는 stdout과 관련이 있다고 생각한다. 이 추측이 맞다면 출력을 얻고 자하는 줄 뒤에 $ stdout.flush를 추가하면 도움이 될 것입니다. – davidrac

+1

아니요, 버퍼링이 이유가 아닙니다 – ted

관련 문제