2013-11-27 46 views
0

我有兩個函數值,我試圖比較,並確保一個比另一個大,我只是不知道如何在RSpec中做到這一點。一個函數是「uncompleted_tasks」,另一個是「tasks.count」,它們都是用戶模型的一部分。這是我在RSpec中的。該主題是User模型的一個實例,RSpec向我提供了「expect(ut)。」應該是< = tc「行上的錯誤」未定義的局部變量或方法'ut'for#(NameError)「。這是怎麼回事?Ruby on Rails RSpec比較函數值

describe "uncompleted tasks should be less than or equal to total task count" do 
    before do 
     ut = subject.uncompleted_tasks 
     tc = subject.tasks.count 
    end 
    expect(ut).should be <= tc 
end 

回答

0

退房this SO answer進一步的細節,但在基本的RSpec局部變量僅限於當地的範圍,包括before塊。因此,在您的before塊中定義的變量在測試中不可用。我建議使用實例變量:

describe "uncompleted tasks" do 
    before do 
     @ut = subject.uncompleted_task 
     @tc = subject.tasks.count 
    end 

    it "should be less than or equal to total task count" do 
    expect(@ut).should be <= @tc 
    end 
end 
0

您需要使用實例變量,並且您的期望需要位於它的塊內。如下所示:

describe "uncompleted tasks should be less than or equal to total task count" do 
    before do 
     @ut = subject.uncompleted_tasks 
     @tc = subject.tasks.count 
    end 
    it "something" do 
     expect(@ut).should be <= @tc 
    end 
end