2012-07-08 3 views
1

나는 테스트 도우미를 쓰고 있으며이 방법이 있습니다 assert 문의 결과를 캡처합니까?

def todo msg = '' 
    assert false, '@TODO: ' + msg 
end 

은 기본적으로 내가 빠른 방법은 테스트를 실패합니다. 다음으로이 메서드를 테스트하고 싶습니다 (발송 가능한 도우미에 캡슐화되기 때문에).

test 'todo' do 
    result = todo 
    expected = '@TODO: ' 
    assert_equal expected, result 
end 

을하지만 그것은 단지 assert false가 호출 될 때 실패 : 그래서 이런 식으로 뭔가를 쓰고 싶습니다. 그러면이 방법을 어떻게 테스트 할 수 있을까요?

답변

5

이 도우미는 Test::Unit과 함께 사용하도록되어 있는데, 맞습니까? 나는 assert falseTest::Unit에 의해 포착 된 예외를 throw한다고 믿습니다. begin...rescue 블록에있는 todo으로 전화를 걸고 예외를 잡을 수 있습니다.

Ruby 표준 라이브러리에 포함 된 test/unit은 실제로 Minitest::Unit입니다. 어설 션이 실패하면 Minitest::Assertion 예외가 발생합니다. 당신은 그 rescue 수 있습니다.

"진짜"Test::Unit의 경우 어설 션이 실패하면 Test::Unit::AssertionFailedError이 발생합니다.

+0

그래, 이건 ;-) –

+1

* 예외를 잡으려면'rescue Exception'을 사용해야합니다. 단지'rescue'가 아닙니다. 벌거 벗은'구조 '에 잡히지 않는 몇 가지 예외가 있습니다. –

+0

이것이 도움이된다면 +1을 부탁드립니다. –

관련 문제