使用rspec测试自定义验证器.为什么我得到Proc?

Mar*_*Pop 5 ruby tdd rspec ruby-on-rails ruby-on-rails-3

正如标题所示,我试图用Rspec测试自定义验证器.我得到一个错误,我不明白为什么......如果你能解释一下,我会非常感激.开始了:

验证器规范

require 'spec_helper'

describe GraphDateValidator do

  it "should not validate activity with empty start time" do
    expect { Graph.new( {start_time: ''}).valid? }.to eq(false)
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我打印Graph.new( {start_time: ''}).valid?它打印false

但是,当它通过规范时,它返回一个Proc对象:

expected: false
            got: #<Proc:0x007fe5853fdd48@/Users/MLP/...
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么我得到那个proc对象?谢谢!

Jes*_*ott 15

通过在期望中使用{},那么你真的没有执行expect方法 - 而是你发送期望一个块.所以重命名为

it "should not validate activity with empty start time" do
  expect( Graph.new( {start_time: ''}).valid? ).to eq(false)
end
Run Code Online (Sandbox Code Playgroud)