해시 및 옵션을 업데이트 할 수 있습니다.하지만 옵션 해시가 변경 될 수 있으며 테스트가 실패하도록 할 수 있습니다. 이것을 작성하는 좋은 방법은 무엇입니까?배열에 여러 항목이 포함되어 있는지 확인하는 좋은 방법
raise RuntimeError, msg unless options.keys.include?(
:external_uid,
:display_name,
:country_code
)
options.keys
에는 정확히 세 항목이 포함되어 있지 않으면 오류가 발생해야합니다.
솔루션이 내가 거의 사용 (bjhaid 감사) :
def ensure_correct_options!(options)
msg = "Only 'external_uid', 'display_name' and 'country_code' can be "
msg += "updated. Given attributes: #{options.keys.inspect}"
raise RuntimeError, msg unless options.keys == [
:external_uid,
:display_name,
:country_code
]
end
을 어쩌면 [이] (http://stackoverflow.com/questions/8026300/ 여러 항목을 배열로 사용하기 - 루비 - 초보자 포함) 체크가 도움이 될 수 있습니다. – Magnuss
@Magnuss, 환호, 나는 그것을 보았지만 정확한 일치 만 원했어 ... 나는 훨씬 더 단순한/얼굴을 때리는 유도 솔루션으로 끝을 맺었다. 건배 – dax
@dax, 배열의 요소가 다른 방식으로 정렬 된 경우 솔루션이 실패합니다 [Hash # fetch] (http://www.ruby-doc.org/core-2.1.1/) Hash.html # method-i-fetch)는 원하는대로 동작하지만 단일 키로 동작합니다. – bjhaid