如何在我的rspec测试中模拟/加倍以下方法

时间:2011-06-13 18:45:06

标签: ruby-on-rails ruby

我的方法大致如下:

def some_method(....)

  user = User.where("....").first

  if !user.nil?

     if ..
         user.delete
     elsif
         user.update_attributes(...)

  else
     new_user = User.new(...)
     new_user.save!
  end

end

分配分配所以我必须为每个案例创建一些测试。

如何创建模拟对象以确保调用特定方法?

如何区分测试中的各种对象?

e.g。

user = User.where("....")

new_user = User.new("...")
new_user.save!

我必须以某种方式测试对where的调用,并且有时返回nil,有时返回用户对象。我必须测试是否保存!被调用并返回true。 并且还测试特定对象上的删除(来自where子句的删除)。

1 个答案:

答案 0 :(得分:1)

您可以使用RSpec存储类方法,例如

User.should_receive(:where).and_return([])