[RUBY-ON-RAILS] 개인 방법을 투기하는 방법
RUBY-ON-RAILS개인 방법을 투기하는 방법
내가 RSpec에와 투기하고 싶은 개인 방법과 모델을 가지고 당신은 보통 어떻게해야합니까? 당신은 단지 개인 하나를 호출하는 방법을 테스트합니까? 나 또한 개인을 투기? 그렇다면, 당신은 어떻게해야합니까?
해결법
-
==============================
1.난 항상이 방법을 : 나는 공개 API를 내 수업이 노출을 테스트 할 수 있습니다.
난 항상이 방법을 : 나는 공개 API를 내 수업이 노출을 테스트 할 수 있습니다.
당신이 개인 방법이있는 경우, 당신은 당신이 다른 클래스에 노출 public 메소드에서 호출. 모든 조건에서 예상대로 그 공개 방법이 작동하는지 테스트하는 경우 따라서, 당신은 또한 민간 방법은 그들이 아니라 일을 사용하는 것이 입증했다.
나는 어떤 특히 복잡한 개인 방법 건너 한 것을 인정한다. 당신이 그들을 테스트 할 것을 극단적 인 경우에, 당신은이 작업을 수행 할 수 있습니다 :
@obj.send(:private_method)
-
==============================
2.필요 코드 커버리지 (일시적 또는 영구적), 일시적으로 RSpec에-상황에 개인 보석을 사용하는 것이 민간 메소드의 컨텍스트 내에서 개인 방법을 공개합니다.
필요 코드 커버리지 (일시적 또는 영구적), 일시적으로 RSpec에-상황에 개인 보석을 사용하는 것이 민간 메소드의 컨텍스트 내에서 개인 방법을 공개합니다.
gem 'rspec-context-private'
그것은 당신의 프로젝트에 공유 컨텍스트를 추가하여 사용할 수 있습니다.
RSpec.shared_context 'private', private: true do before :all do described_class.class_eval do @original_private_instance_methods = private_instance_methods public *@original_private_instance_methods end end after :all do described_class.class_eval do private *@original_private_instance_methods end end end
그런 다음 전달하는 경우 : 메타 데이터 등을 개인이 블록을 설명, 민간 방법은 컨텍스트 내에서 공개됩니다.
class Example private def foo 'bar' end end describe Example, :private do it 'can test private methods' do expect(subject.foo).not eq 'bar' end end
-
==============================
3.당신이 개인 방법에 기대를 테스트하고자하는 경우, 허용 대답은 정말 일 (나는 그 시점에 정정에 열려있어, 그래서 적어도 내가 알고하지 않는 것이)됩니다. 내가 대신했던 심지어 filthier입니다 - 테스트 자체, 그냥 재정의하는 방법을 노출 :
당신이 개인 방법에 기대를 테스트하고자하는 경우, 허용 대답은 정말 일 (나는 그 시점에 정정에 열려있어, 그래서 적어도 내가 알고하지 않는 것이)됩니다. 내가 대신했던 심지어 filthier입니다 - 테스트 자체, 그냥 재정의하는 방법을 노출 :
def object_to_test.my_private_method super end
루비 1.8에 작품 새로운 런타임의에 대해 언급 할 수 없다.
from https://stackoverflow.com/questions/4154409/how-to-spec-a-private-method by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] CSRF 보호를 해제하지 않고 API 디자인 레일 (0) | 2020.02.18 |
---|---|
[RUBY-ON-RAILS] 명명 된 노선 _url 대 _path (0) | 2020.02.18 |
[RUBY-ON-RAILS] 레일 : around_ * 콜백 (0) | 2020.02.18 |
[RUBY-ON-RAILS] RegistrationsController #에서 ActionController :: InvalidAuthenticityToken 작성 (0) | 2020.02.18 |
[RUBY-ON-RAILS] 왜 첫 번째 요소가 포함 된 배열을 사용하여 다중 선택 항상 내 레일에서 비어? (0) | 2020.02.18 |