2011-12-08 4 views
2

Ruby로 작성된 Test :: Unit을 통한 단위 테스트 메소드가 있다고 가정합니다. 이 방법은 두 가지 이상의 이유로 SystemExit을 발생시킬 수 있지만이를 던지는 이유를 Exception에 고유하게 식별합니다. 나는 예외가 발생한다는 주장이 작업을 수행 할 수 있습니다 알고Exception의 메시지가 Test :: Unit을 통해 Ruby의 알려진 문자열과 일치하는지 확인하십시오.

assert_raises(SystemExit) { boo() } 

하지만이 boo()SystemExit 발생하는 모든 경우와 일치합니다. boo()abort("reason 1")에서 발생한 사례를 abort("reason 2")에서 어떻게 구별 할 수 있습니까?

답변

3

begin..rescue으로 트랩하십시오. 반복적으로해야 할 경우 도우미 메서드를 작성하십시오.

begin 
    boo() 
rescue SystemExit => e 
    assert_equal(e.message, "This message") 
end 
+0

매력처럼 작동했습니다 - 감사합니다! Test :: Unit에 내장 된 무언가가 자동으로 만들어 졌는지 확실하지 않았지만, 이것도 작동합니다! –

+0

'# assert_raises_with_message'를 정의 할 수 있습니다. :) – d11wtq

2

assert_raises 도우미 이미 당신은

e = assert_raises(SystemExit) { boo() } 
assert_equal("Reason 1", e.message) 

/시작 스스로를 구출 할 필요를 잡는다 없다는 것을 제외하고 반환합니다.

관련 문제