2011-09-09 7 views
1

net/http을 사용하여 원격 파일을 처리하는 루비 보석을 몇 개 유지합니다.Ruby에서 유닛 테스팅을위한 더미 서버 만들기

현재 단위 테스트 설정은 setup 방법으로 WEBrick 서버를 시작한 다음 teardown에서 종료합니다. Errno::ECONNREFUSED: Connection refused - connect(2) -

def setup 
    return if @server_thread 
    @server_thread = Thread.new do 
    s = WEBrick::HTTPServer.new(:Port => 12000, :DocumentRoot => www_root, :Logger => Log.new(nil, BasicLog::ERROR), :AccessLog => []) 
    port = s.config[:Port] 
    begin 
     s.start 
    ensure 
     s.shutdown 
    end 
    end 
end 
루비 1.9.2와

및 1.9.3 나는 연결 오류의 무리를지고있어. 더욱 좌절하는 것은 일시적이라는 것입니다. 내가 생각할 수있는 것은 WEBrick이 압도 당하고 있거나 처음부터 제대로 설정되지 않았다는 것입니다.

이러한 보석을 테스트하려면 HTTP를 통해 여러 정적 파일 (내 고정 장치 디렉토리에 있음)을로드 할 수 있어야합니다. Test::Unit 테스트에 사용할 더미 HTTP 서버를 만드는 가장 좋은 방법은 무엇입니까?

답변

4

net/http 클래스를 정적 ​​파일 콘텐츠를 반환하도록 조롱합니다. 테스트중인 클래스가 단위 테스트 실행 중에 모의 객체를 사용하고 프로덕션에서 net/http을 사용하도록 종속성 주입을 사용하십시오.

webmock 또는 fakeweb 보석을 사용할 수도 있습니다.

+1

webmock이 완벽합니다. 감사합니다. –

관련 문제