2013-07-30 2 views
7

하나의 REST API에 대해 Ruby 인터페이스를 개발합니다. 나는 테스트를 위해 rspec과 vcr을 사용한다.
모든 테스트는 특별히 계정 용으로 생성 된 계정의 자격 증명을 사용합니다.
내 테스트 (vcr 카세트)의 캐시 된 응답을 저장소에 저장하거나 사용자와 가입자가 자신의 카세트를 작성할 수 있도록 허용 할 수 있습니까?vcr 카세트를 저장소에 저장하는 것이 맞습니까?

천황의 이름으로! 성전이 시작하자!

+0

FWIW, VCR 제작자는 카세트를 커밋합니다. https://twitter.com/myronmarston/status/199887944570503168. 그가 자세하게 들어가는 게시물이 있지만, 찾을 수는 없습니다. – Dennis

답변

3

요청에 중요한 정보를 포함하지 않는 한 커밋 할 수 없습니다.

그러나 첫 번째 테스트에서 카세트를 시드 한 후에는 문제가되지 않습니다.

개인적으로 나는 내 요청 형식을 변경하는 일부 불명확 한 컴퓨터 특정 오류를 진단해야 할 경우에 대비하여 내역 요청에 대해 확인되는 아이디어를 좋아합니다. (IE 동적으로로드 된 라이브러리로 인해 일들이 잘못 이스케이프되고있는 일부 인코딩 버그).

5

VCR의 카세트는 테스트의 고정 장치로 사용됩니다. 저장소에 커밋해야합니다. 그렇지 않으면 테스트가 다른 사람의 컴퓨터에서 올바르게 실행되지 않거나 테스트 의존도가 높은 외부 종속성만으로 테스트가 제대로 수행되지 않습니다.

물론 위의 내용을 유지하면서 공개 또는 팀에서 자격 증명을 숨길 필요가 있습니다.

해결책은 filter_senstive_data 설정과 Figaro gem입니다.

처음에는 This answer from Myron in a similar question으로 크게 문제를 해결할 수 있습니다. 설정 VCR에

VCR.configure do |c| 
    c.filter_sensitive_data("<SOMESITE_PASSWORD>") do 
    ENV['SOMESITE_PASSWORD'] 
    end 
end 

내가 확인,이 설정에 대한 자세한 내용은 해당 문서를 나중에

더 추가 할 수 있기 때문에 마이런의 대답에서 복사 위의 코드 블록 https://relishapp.com/vcr/vcr/v/2-5-0/docs/configuration/filter-sensitive-data

이제 ENV['SOMESITE_PASSWORD']의 경우 Figaro gem을 사용하여 실제 자격 증명이 될 수 있습니다.

피가로를 설치하면 config/application.yml 파일이 만들어지고 .gitignore에 추가됩니다. 따라서 공개 키를 누설하지 않고 자격 증명 사용자 이름과 암호를 입력하면됩니다.

관련 문제