2014-03-13 10 views
1

나는 rspec에서 테스트를 작성 중이며 let과 함께 일부 변수를 선언하려고합니다.슈퍼에서 루비 해시로 단일 값 업데이트

그래서 제 질문은, 어떻게 내가 원래 단지 하나의 값을 덮어 않는됩니다 http://myronmars.to/n/dev-blog/2013/02/rspec-2-13-is-released :

describe 'my_test' do 
    let(:params) {{ 
     :happy => 1, 
     :sad => 0, 
    }} 

    context 'mixed' do 
     let(:params) {{ 
      :happy => 1, 
      :sad => 1, 
     }} 
    end 
end 

그러나 나는 변수가 PARAMS의 긴 목록 편리 할 것이다, super로 ovewritten 할 수있는 방법을 보았다 해시시? 검색을 시도했지만 모든 값을 덮어 쓰는 방법 만 찾을 수 있습니다. 아래와 같은 것이 있습니까? 당신은 해시 번호를 사용하여 해시 변수를 오버로드 할 수

let(:hash) { super().updatehash('sad', '1') } 

답변

6

let(:hash) { super().merge(:sad => '1') } 

는 당신이 위에 병합 해시에서 제공하는 키 - 값 쌍 원래 해시의 모든 키 - 값을 덮어 쓰게됩니다 병합합니다. 당신이 병합에 대한 DOCO에 대한 링크를 원하는 경우

는 apidock이 좋다 :

http://apidock.com/ruby/Hash/merge

+2

감사합니다! 이것은 매우 중요합니다. – xiankai

+0

대단히 반갑습니다. 더 많은 doco에 대한 링크를 추가하겠습니다. –

+0

루비와 rspec에 꽤 익숙하고 물건을 찾으려면 어디 있는지 정확히 알지 못하기 때문에 멋질 것입니다. – xiankai

관련 문제