Rspec의 should_raise를 예외적으로 사용하는 방법은 무엇입니까?
저는 다음과 같은 일을 하고 싶습니다.
some_method.should_raise <any kind of exception, I don't care>
이거 어떻게 해야 돼요?
some_method.should_raise exception
작동하지 않습니다.
expect { some_method }.to raise_error
Rspec 1 구문:
lambda { some_method }.should raise_error
자세한 내용은 설명서(RSpec 1 구문) 및 RSpec 2 설명서를 참조하십시오.
Rspec 2
expect { some_method }.to raise_error
expect { some_method }.to raise_error(SomeError)
expect { some_method }.to raise_error("oops")
expect { some_method }.to raise_error(/oops/)
expect { some_method }.to raise_error(SomeError, "oops")
expect { some_method }.to raise_error(SomeError, /oops/)
expect { some_method }.to raise_error(...){|e| expect(e.data).to eq "oops" }
# Rspec also offers to_not:
expect { some_method }.to_not raise_error
...
참고:raise_error
그리고.raise_exception
교환 가능합니다.
Rspec 1
lambda { some_method }.should raise_error
lambda { some_method }.should raise_error(SomeError)
lambda { some_method }.should raise_error(SomeError, "oops")
lambda { some_method }.should raise_error(SomeError, /oops/)
lambda { some_method }.should raise_error(...){|e| e.data.should == "oops" }
# Rspec also offers should_not:
lambda { some_method }.should_not raise_error
...
참고:raise_error
의 별칭입니다.raise_exception
.
설명서: https://www.relishapp.com/rspec
Rspec 2:
- https://www.relishapp.com/rspec/rspec-expectations/v/2-13/docs/built-in-matchers/raise-error-matcher
Rspec 1:
- http://apidock.com/rspec/Spec/Matchers/raise_error
- http://apidock.com/rspec/Spec/Matchers/raise_exception
람다 대신 기대값을 사용합니다.
expect { some_method }.to raise_error
이는 rspec의 최신 버전(예: rspec 2.0 이상)에 적용됩니다.
자세한 내용은 의사를 참조하십시오.
구문이 최근에 변경되었으며 현재는 다음과 같습니다.
expect { ... }.to raise_error(ErrorClass)
버전 3.3 이후rspec-expections
gem은 매개 변수가 없는 빈 raise_error에 대해 경고를 발생시킵니다.
expect { raise StandardError }.to raise_error # results in warning
expect { raise StandardError }.to raise_error(StandardError) # fine
이를 통해 코드가 검사하려는 테스트와 다른 오류로 인해 실패할 수 있음을 알 수 있습니다.
경고:사용
raise_error
특정 오류 또는 메시지 위험 거짓 긍정을 제공하지 않는 일치자, 이후raise_error
루비가 a를 올리면 일치할 것입니다.NoMethodError
,NameError
또는ArgumentError
잠재적으로 호출하려는 메소드를 실행하지 않고 예상치를 통과할 수 있습니다.대신 특정 오류 클래스 또는 메시지를 제공하는 것이 좋습니다.이 메시지는 다음을 설정하여 표시할 수 있습니다.RSpec::Expectations.configuration.warn_about_potential_false_positives = false
.
언급URL : https://stackoverflow.com/questions/1722749/how-to-use-rspecs-should-raise-with-any-kind-of-exception
'programing' 카테고리의 다른 글
루비 버전 2.0.0을 Mac OS X v10.10(요세미티)의 최신 버전으로 업데이트하려면 어떻게 해야 합니까? (0) | 2023.06.03 |
---|---|
Android 버튼을 비활성화하는 방법은 무엇입니까? (0) | 2023.06.03 |
UITableView beginUpdates/endUpdates에서 애니메이션이 종료되었음을 감지하는 방법은 무엇입니까? (0) | 2023.06.03 |
오류 - SqlDateTime 오버플로입니다.1/1/1753 오전 12:00 ~ 12/31/9999 오후 11:59:59 사이여야 합니다. (0) | 2023.05.29 |
조건부 서식 - 하나의 열을 기준으로 전체 행의 색 축척 (0) | 2023.05.29 |