对于Date,未定义的方法`should'

时间:2014-02-26 14:06:27

标签: ruby-on-rails rspec ruby-on-rails-4

我正在尝试测试两个模型之间的行为

BudgetRule模型中,我有after_create方法,可以创建Transaction(另一个模型)。

我想在创建的事务中测试action_start列。在我的测试中,它应该相等Date.today。所以我的BudgetRule测试如下:

require 'rspec'

describe BudgetRule do

  user = FactoryGirl.create(:user)
  let(:budget_rule) { FactoryGirl.build(:budget_rule, user: user) }

  subject { budget_rule }

  it 'should add proper action start' do
    budget_rule.save!
    budget_transaction = Transaction.find_by(user: user, budget_rule: budget_rule)
    budget_transaction.action_start.should == Date.today
  end
end

但我收到了

NoMethodError: undefined method `should' for Wed, 26 Feb 2014:Date

感谢您的帮助!

更新:

当我做:

budget_transaction.action_start should == Date.today #without dot before "should"

我收到了

expected: Wed, 26 Feb 2014
     got: #<BudgetRule id: 7, ...and so on... "> (using ==)

1 个答案:

答案 0 :(得分:1)

因此,在几次失败之后,工作测试是:

require 'rspec'

describe BudgetRule do

  user = FactoryGirl.create(:user)
  budget_rule = FactoryGirl.create(:budget_rule, user: user)
  budget_transaction = Transaction.find_by(user: user, budget_rule: budget_rule)

  subject { budget_transaction }

  it 'should add proper action start' do
    expect(budget_transaction.action_start).to eq Date.today
  end

end

希望有一天能帮助某人:)