RSpec与应该相等的值不同

时间:2011-12-11 18:07:33

标签: ruby-on-rails ruby rspec

我无法理解为什么下面的代码块没有通过,即使puts值显示我正在检查的值:

  let(:new_on_each_example) { MovieList.new }
  it "can use method defined by 'let'" do
    new_on_each_example.should_not be_nil
    # the object is memoized, so
    new_on_each_example.should == new_on_each_example

    puts new_on_each_example.class
    new_on_each_example.class.should == "MovieList"
  end

控制台显示:

  

MovieList

     

预期:“MovieList”        got:MovieList(id:integer,title:string,created_at:datetime,updated_at:datetime,track_number:integer)(using ==)

Puts显示我正在寻找的值,但测试失败。这是为什么?

2 个答案:

答案 0 :(得分:2)

new_on_each_example.should be_instance_of(MovieList)

rspec matchers doc

中的更多信息

答案 1 :(得分:0)

您将转到RSpec "MovieList"。这是一个字符串,而不是你班级的常数。所以你应该这样做:

new_on_each_example.class.should == MovieList

但是使用RSpec你也可以做一些更优雅的事情:

new_on_each_example.class.should be_a(MovieList)