Ruby on Rails RSpec比较函数值

时间:2013-11-27 17:11:58

标签: ruby-on-rails ruby rspec

我有两个函数值,我试图比较并确保一个比另一个更大,我只是无法弄清楚如何在RSpec中做到这一点。一个函数是“uncompleted_tasks”,另一个函数是“tasks.count”,它们都是User模型的一部分。这是我在RSpec中所拥有的。主题是User模型的一个实例,RSpec在“expect(ut).should be< = tc”这一行给出了错误,“未定义的局部变量或方法'ut'代表#(NameError)”。发生了什么事?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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