2013-06-09 2 views
0

나는 run_times가 실행될 때마다이를 이해하고 run_times 값 중 ​​하나를 해제하고 fake_time에 추가합니다. 그리고 나의 측정 방법으로 나는 그것들을 모으고 평균을 얻으려고합니다. 그러나 메서드 내에서 값을 가져올 수 없습니다.변수가 포함 된 블록을 전달할 때 메서드 내에서 변수에 액세스

그것은 다음과 같은 RSpec에 전달해야 :

def measure (n = 1) 
    if n > 1 
    n.times { yield } 

    else 
    start = Time.now 
    yield 
    elapsed_time = Time.now - start 
    elapsed_time 

    end 

end 

가 사전에 감사합니다

it "returns the average time, not the total time, when running multiple times" do 
    run_times = [8,6,5,7] 
    fake_time = @eleven_am 
    Time.stub(:now) { fake_time } 
    average_time = measure(4) do 
    fake_time += run_times.pop 
end 
    average_time.should == 6.5 
end 

다음은 내 코드입니다! 나는 이것에 잠시 붙어 있었고 아무 것도 작동하지 않는 것처럼 보였습니다.

답변

0

n.timesn을 반환 하시겠습니까? 즉, measure4이면 이므로 average_time6.5이 아닌 4입니다.

+0

답변 인 경우 더 나은 설명이 필요합니다. –

+0

4를 반환하지만 6.5를 반환해야합니다. 그것은 배열 값의 평균입니다. 나는 접근하거나 돌아올 수없는 것. –

관련 문제