이런 일이 생긴다??
(Windows Vista, ruby 버전 1.8.6-p111, hpricot 의 버전 0.6.164, 0.6)
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>프로그래밍 갤러리 RSS Service</title>
    <link>http://gall.dcinside.com/list.php?id=programming</link>
    <description>프로그래밍 갤러리 RSS Service(Made by Heart)</description>
    <item>
      <title>title0</title>
      <link>http://gall.dcinside.com/list.php?id=programming&amp;no=0</link>
      <description></description>
      <pubDate>Wed, 22 Apr 2009 19:02:44 +0900</pubDate>
    </item>
    <item>
      <title>title1</title>
      <link>http://gall.dcinside.com/list.php?id=programming&amp;no=1</link>
      <description></description>
      <pubDate>Wed, 22 Apr 2009 19:02:44 +0900</pubDate>
    </item>
... 이하 <item> ...
</rss>

를 읽어서

items = doc.search('//item')
item = items[0]
titles = item.search('title')

까지 하고 puts item 으로 item 내용을 출력하면

<item>
    <title>title0</title>
    <link />http://gall.dcinside.com/list.php?id=programming&amp;no=0
    <description></description>
    <pubdate>Wed, 22 Apr 2009 19:02:44 +0900</pubdate>
</item>

보이다시피 <link/> 가 되어 버린다. 덕분에 내 코드는 실제 코드는 문제가 없는데도 유닛 테스트에서 계속 걸렸다.

내가 분명 어딘가 잘못한 데가 있겠지 생각했지만 아무리 눈을 씻고 찾아봐도 없었다.
결국 이런 고난을 안겨 준 Hpricot 을 탓하기 시작하면서, Hpricot 으로 XML 을 파싱 하는 게 일단 안될 리는 없을꺼고 따로 있는건가 싶어 찾아봤다.
아차... 따로 있다.

결론 )
XML 용 Hpricot 호출은 따로 있으니까 주는 거 쓰자

Hpricot.XML()

진짜 결론 : 하여튼 유닛 테스팅 적용했다 ㅠ.ㅠ
아직 테스팅 데이터 적용 방법에 의한 문제가 해결되진 않았지만... 어찌됐던간에 손을 한 번 더 쓰던 두 번 더 쓰던 세부 기능 각각에 대해 유닛 테스트가 가능하게 했다. 이제 딴 소스도 적용해 봐야지...
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Heart