MiniTest의 assert_raises / must_raise에서 예외 메시지를 확인하기위한 예상 구문은 무엇입니까?
MiniTest의 assert_raises
/ 에서 예외 메시지를 확인하는 데 예상되는 구문은 무엇입니까 must_raise
?
다음과 같은 어설 션을 만들려고 "Foo"
합니다. 예상되는 오류 메시지는 어디에 있습니까 ?
proc { bar.do_it }.must_raise RuntimeError.new("Foo")
assert_raises
어설 션 또는 must_raise
예상을 사용할 수 있습니다 .
it "must raise" do
assert_raises RuntimeError do
bar.do_it
end
-> { bar.do_it }.must_raise RuntimeError
lambda { bar.do_it }.must_raise RuntimeError
proc { bar.do_it }.must_raise RuntimeError
end
오류 개체에서 무언가를 테스트해야하는 경우 다음과 같이 어설 션 또는 기대치에서 가져올 수 있습니다.
describe "testing the error object" do
it "as an assertion" do
err = assert_raises RuntimeError { bar.do_it }
assert_match /Foo/, err.message
end
it "as an exception" do
err = ->{ bar.do_it }.must_raise RuntimeError
err.message.must_match /Foo/
end
end
예외를 주장하려면 :
assert_raises FooError do
bar.do_it
end
예외 메시지를 주장하려면 :
당으로 API의 문서 , assert_raises
등, 당신이 메시지를 확인 할 수 있도록 예외가 일치 반환 속성
exception = assert_raises FooError do
bar.do_it
end
assert_equal('Foo', exception.message)
Minitest는 (아직) 실제 예외 메시지를 확인하는 방법을 제공하지 않습니다. 하지만이를 수행하는 도우미 메서드를 추가하고 ActiveSupport::TestCase
레일 테스트 스위트의 모든 곳에서 사용 하도록 클래스를 확장 할 수 있습니다. 예 : intest_helper.rb
class ActiveSupport::TestCase
def assert_raises_with_message(exception, msg, &block)
block.call
rescue exception => e
assert_match msg, e.message
else
raise "Expected to raise #{exception} w/ message #{msg}, none raised"
end
end
다음과 같은 테스트에서 사용하십시오.
assert_raises_with_message RuntimeError, 'Foo' do
code_that_raises_RuntimeError_with_Foo_message
end
좀 더 최근 개발 을 추가 하기 위해 과거에 운이 좋지 않은 미니 테스트 에 추가 하는 것에 대한 논의 가있었습니다 assert_raises_with_message
.
현재, 병합을 기다리고 있는 유망한 풀 리퀘스트 가 있습니다. 병합되면 assert_raises_with_message
직접 정의하지 않고도 사용할 수 있습니다 .
In the meanwhile, there is this handy little gem named minitest-bonus-assertions which defines exactly that method, along with few others, so that you can use it out of the box. See the docs for more information.
'code' 카테고리의 다른 글
JUnit으로 Java에서 추상 클래스를 테스트하는 방법은 무엇입니까? (0) | 2020.09.24 |
---|---|
sed를 사용하여 문자열에서 텍스트를 추출하는 방법은 무엇입니까? (0) | 2020.09.24 |
Python을 다른 폴더에서 가져올 수 없습니다. (0) | 2020.09.24 |
성능 및 Java 상호 운용성 : Clojure 대 Scala (0) | 2020.09.24 |
자바 : 클래스의 모든 변수 이름 가져 오기 (0) | 2020.09.24 |