0

对测试如此陌生,希望您能提供建议。

我有一个简单的模型:

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)”

所以我显然仍然在错误的道路上。

你能建议吗?

4

2 回答 2

0

您不需要创建任何模拟。只需创建您要提供给模拟的对象值的实例并断言 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
于 2013-06-06T23:09:48.313 回答
0

你不能只创建一个新的实例对象吗?

checkout = Checkout.new(
  checkin: 2.days.from_now.strftime('%Y-%m-%d'), 
  checkout: 4.days.from_now.strftime('%Y-%m-%d')
  )
于 2013-06-06T23:10:02.693 回答