2013-10-16 2 views
0

다음은 RSPEC의 테스트입니다. 그것은 실패하고 나는 이유를 이해할 수 없다! 나는 그것이 그것의 용량까지 자전거와 함께 밴으로 가득 차기를 얻으려고 노력하고있다. 그러나 모든 다른 자전거를 역에 맡긴다. 그러나 그것은 현재 각각 하나씩을 제외한 모든 자전거를 삭제합니다. van.rb에서RSPEC 테스트가 실패했습니다. 어떤 아이디어?

let(:van) { Van.new } 
let(:bike) { double :bike, broken?: false } 
let(:broken_bike) { double :broken_bike, broken?: true } 
let(:station) { double :station } 

it 'can be filled with broken bikes' do 
    station = double :station, { release_x_broken_bikes: broken_bike } 
    expect(station).to receive(release_x_broken_bikes: broken_bike) 
    van.fill_with_broken_bikes_from station 
    expect(van.bike_count).to eq > 2 
end 

관련 코드 : station.rb에서

def initialize bikes = [], capacity = 10 
    @bikes = bikes 
    @capacity = capacity 
end 

def bike_count 
    @bikes.count 
end 

def fill_with_broken_bikes_from station 
    @bikes = station.release_x_broken_bikes(slots_available) 
end 

def slots_available 
    @capacity - bike_count 
end 

코드 : 귀하의 사양에

def broken_bikes 
    @bikes.select { |bike| bike.broken? } 
end 

def release_broken_bike 
    @bikes.delete(broken_bikes.first) 
end 

def release_x_broken_bikes(x) 
    broken_bikes[0,x].map{ release_broken_bike} 
end 
+1

오류를 게시 할 수 있습니까? – Nikola

+0

'x.to eq> 2'가 올바른 방법인가요? – tadman

+0

실패 : 1) 반 깨진 자전거 장애/오류로 채워질 수 : 더블 van.fill_with_broken_bikes_from 역 : 역 예기치 않은 메시지를 받았습니다 : (10) #의 ./lib/van.rb:29:in'와 release_x_broken_bikes 0.00995 초 12 예, 거의 확실 1 개 실패 – JamesJY

답변

0

:

expect(station).to receive(release_x_broken_bikes: broken_bike) 

당신이 말하는 것 역이 release_x_broken_bikes 위트를받을 것으로 예상 h의 인수는 broken_bike입니까? 그 방법을 보면 숫자가 필요합니다. broken_bike는 나에게 두 배처럼 보입니다.

귀하의 오류가 알려줍니다 정확히 :

1) Van can be filled with broken bikes Failure/Error: van.fill_with_broken_bikes_from station Double :station received unexpected message :release_x_broken_bikes with (10) # ./lib/van.rb:29:in fill_with_broken_bikes_from' # ./spec/van_spec.rb:51:in block (2 levels) in ' Finished in 0.00995 seconds 12 examples, 1 failure

그것은 당신이 원하는 실제로해야하는지 것 같다 10release_x_broken_bikes에 대한 호출을 받았다. 그것을 기대하라고 말하면, 다음 문제 (있을 경우)를 얻을 수 있습니다.

관련 문제