Rails测试模型实例方法

时间:2013-06-06 22:59:53

标签: ruby-on-rails mocking rspec2

这是测试的新手,希望你能提出建议。

我有一个简单的模型:

class Checkout < ActiveRecord::Base

  validates.........  

  def number_of_days
    (checkout - checkin).to_i
  end

end

我想测试'number_of_days'方法返回正确的值。我已经尝试过mock_model以及其他各种方法来存根,但却无法让它工作。

这是我最近的尝试仍然不起作用:

要求'spec_helper'

describe Checkout do

  it "should calculate the number of days" do
    checkout = mock_model(Checkout, 
          checkin: 2.days.from_now.strftime('%Y-%m-%d'), 
          checkout: 4.days.from_now.strftime('%Y-%m-%d')
          )
    expect(checkout.number_of_days).to eq(2)
  end

end

上述测试的错误是“ouble”Checkout_1001“收到意外消息:number_of_days with(no args)”

所以我显然仍然走错了路。

你可以建议吗?

2 个答案:

答案 0 :(得分:0)

您无需创建任何模拟。只需创建一个您给mock的对象值的实例,并断言number_of_days方法的返回值。

describe Checkout do

  it "should calculate the number of days" do
    checkout = Checkout.new( 
          checkin: 2.days.from_now.strftime('%Y-%m/%d'), 
          checkout: 4.days.from_now.strftime('%Y-%m/%d')
          )
    checkout.number_of_days.should eq(2)
  end

end

答案 1 :(得分:0)

你能不只是制作一个新的实例对象?

checkout = Checkout.new(
  checkin: 2.days.from_now.strftime('%Y-%m-%d'), 
  checkout: 4.days.from_now.strftime('%Y-%m-%d')
  )