2016-11-11 1 views
3

툴팁을 추가하기 위해 내용의 단어를 레일 도우미로 바꿉니다. 전혀 문제가 전혀 작동하지 않지만, 정확한 출력에이 도우미를 테스트하고 싶습니다. 교체가 원치 않는 형식을 추가하기 때문에이 도우미를 실제로 테스트하기가 어렵습니다.생성 된 텍스트에 대한 테스트 작성

원래 문자열은

a piece of <a href="http://">content</a> that contains jargon1 to be replaced 

내 도우미는 툴팁에게 주입 된 HTML 모든이의

a piece of <a href="http://">content</a> that contains  <a href='#jargon-130' 
    class='jargon-tip' 
    data-toggle='tooltip' 
    data-placement='top' 
    data-original-title='desc for jargon 1' 
    rel='help'>jargon1</a> 
    to be replaced 

첫째와 문자열의

content.gsub!(/#{jargon.word}/i, get_node(jargon)) 

def get_node jargon 
    <<-HTML 
    <a href='#jargon-#{jargon.id}' 
     class='jargon-tip' 
     data-toggle='tooltip' 
     data-placement='top' 
     data-original-title='#{jargon.desc}' 
     rel='help'>#{jargon.word}</a> 
    HTML 
end 

결과를 렌더링하기 위해 일부 HTML을 jargon1 대체 that contains<a 사이의 7 공백이고 i html로 결과에 인라인을 표시하고 싶지만 위 코드처럼 읽을 수 있도록 포맷 된 것을 좋아한다.

최종 목표는 구문 분석 된 문자열을 미리 정의 된 문자열과 비교하는 강력한 테스트를 작성하는 것입니다. 지금은 문자열의 일부분 (expect(result).to include("data-original-title='desc for jargon 1'"))에 대해서만 테스트를합니다. \ n 문제가 있기 때문에 형식이 잘못되어 테스트가 어려울 것입니다.

미리 감사드립니다.

답변

0

당신은 사용할 수 있습니다

def get_node jargon 
    node=<<-HTML 
    <a href='#jargon-#{jargon.id}' 
     class='jargon-tip' 
     data-toggle='tooltip' 
     data-placement='top' 
     data-original-title='#{jargon.desc}' 
     rel='help'>#{jargon.word}</a> 
    HTML 
    node.strip.gsub(/\s+/, ' ') 
end 

이 처음이나 문자열의 끝에서 공백을 제거하고 그냥 공백으로 어떤 여러 공백 (예를 들어, 줄 바꿈 + 들여 쓰기를) 대체합니다.

그러면 문자열이 <a href='...' class=X data=Y></a> 인 것처럼 보이기 때문에 테스트하기가 더 쉽습니다.

0

Rails의보기 도우미를 사용하여 프로그래밍 방식으로 HTML을 생성해야합니다. 특정 경우에 그것은 link_to 도우미입니다 :

def get_node(jargon) 
    link_to(jargon.word, "#jargon-#{jargon.id}", 
    class: 'jargon-tip', 
    rel: 'help', 
    data: { 
     toggle: 'tooltip', 
     placement: 'top', 
     original_title: jargon.desc 
    } 
) 
end 

예 :

jargon = OpenStruct.new(id: 130, desc: 'desc for jargon 1', word: 'jargon1') 
puts get_node(jargon) 

출력 :

<a class="jargon-tip" data-toggle="tooltip" data-placement="top" data-original-title="desc for jargon 1" rel="help" href="#jargon-130">jargon1</a> 
+0

이 그것을하는 더 나은 방법이다가, 바로 그것을 변경 ..하지만 난 여전히 테스트 도우미의 비교 문자열에서 들여 쓰기를 사용하려고합니다. 결과에서 내 코드/변수 값에서 생성 된 줄 바꿈을 무시하는 방법이 있습니까? html을 들여 쓰면 ('\ n') 추가됩니다. 감사합니다 – Daniel

+0

예, 스트립과 gsub 내 대답을 참조하십시오. –

관련 문제