2013-09-07 2 views
3

내 rspec 테스트에 mock_redis gem을 사용하여 redis를 스터핑하려고합니다. GET 및 SET를 내 실제 레디 스 인스턴스에 전송되는 난 아직도보고 있어요, 불행하게도rspec 테스트에서 redis를 스텁 할 수 없습니다.

RSpec.configure do |config| 
    # ... various rspec config options ... 

    config.before(:each) do 
    redis_instance = MockRedis.new 
    Redis.stub(:new).and_return(redis_instance) 
    Redis::Store.stub(:new).and_return(redis_instance) 
    end 
end 

을, 나는 레디 스를 죽일 경우, 다음 내 테스트를 모두 실패 : 내 RSpec에 설정은 다음과 같습니다. 내가 중단 점을 추가하려고, 그리고이 코드 블록이 제대로 실행되고 볼 수 있습니다. 또한이 before 블록의 범위 내에서 Redis.new == redis_instanceRedis::Store.new == redis_instance이 모두 true라는 것을 확인했습니다.

다른 사람이 나에게 적합하지 않다는 통찰력이 있습니까? 나는 스터 빙/조롱을위한 대체 접근법에 대해서도 개방적이다.

답변

0

and_return으로 값 대신 블록을 전달하는 것처럼 보이지만 이유는 확실하지 않습니다. 예 :

Redis.stub(:new).and_return { redis_instance } 
Redis::Store.stub(:new).and_return { redis_instance } 
관련 문제