2009-12-01 7 views
1

Ruby On Rails 단위 테스트가 간단한 문자열 비교에서 실패하고 그 이유를 알 수 없습니다. 모델 TestItem에서 Ruby on Rails 단위 테스트에서 문자열 비교

, 나는 데이터가 Net::HTTP::post 요청에 의해 반환 된 XML 문자열입니다

doc = REXML::Document.new(data) 
@bugtitle = doc.root.get_text("/bugzilla/bug/short_desc") 

있습니다. 데이터가 잘 보이고, 내가 @bugtitle을 출력하면 예상되는 문자열이 포함됩니다.

1) Failure: 
test_bugtitle(TestTest) [unit/testitem_test.rb:7]: 
<"different RID folder for gating x-ray correction images"> expected but was 
<"different RID folder for gating x-ray correction images">. 

내가 손해를보고있어 내 단위 테스트에서, 나는 시험 (쉘에서 그대로 복사) 다음과 같은 출력 실패 놀랍게도 (적어도 나를 위해)

test "bugtitle" do 
    ti = testitems(:one) 
    assert_equal("different RID folder for gating x-ray correction images",ti.bugtitle) 
    end 

이 여기서 문자열이 나에게 똑같이 보이기 때문에이 오류가 어디서 왔는지에 관해서. 그게 가치있는 일이라면, Windows에서 레일 2.3.4와 루비 1.8.6 (나 시작하지 마라)이다.

+0

어떤 Ruby 버전입니까? – MBO

답변

0

여기 해결책 : 디버깅에

, I는 @bugtitleREXML::Text 인스턴스임을 계시 모델 코드에 p @bugtitle.class 첨가. 올바른 모델 코드는 다음과 같습니다.

doc = REXML::Document.new(data) 
@bugtitle = doc.root.get_text("/bugzilla/bug/short_desc").to_s 

이 수정으로 단위 테스트는 실패없이 완료됩니다.

+0

당신은 자신의 질문에 대답했습니다. 대답으로 표시 할 수 있습니다 – MBO

+0

네, 이틀 후 :) – jhwist

1

두 개는 동일하게 보이지만, #inspect 이후에는 그 표현이 표시됩니다. 인코딩과 바이너리 표현 (Ruby 1.9 인 경우)을 점검해야합니다. 아마도 그게 문제입니다. MBO는 오른쪽 방향으로 나를 찌르고 때문에

+0

#inspect를 가리켜 주셔서 고맙습니다. 그 자체로는 도움이되지 않았지만 호기심이 생겼습니다. 솔루션에 대한 내 대답을 참조하십시오. – jhwist