/ /私のrspecテストで次のメソッドをモック/ダブルする方法-ruby-on-rails、ruby

私のrspecテストで次のメソッドを模擬/二重にする方法 - 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

分岐がたくさんあるので、それぞれの場合にいくつかのテストを作成する必要があります。

特定のメソッドが呼び出されるようにモックオブジェクトを作成するにはどうすればよいですか?

テストでさまざまなオブジェクトを区別するにはどうすればよいですか?

例えば

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

そして

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

私はどういうわけかどこへの呼び出しをテストする必要があります、そして場合によってはnilを返し、場合によってはユーザーオブジェクトを返します。そして、私は保存するかどうかをテストする必要があります!が呼び出され、trueを返します。 また、特定のオブジェクト(where句からのオブジェクト)の削除をテストします。

回答:

回答№1は1

RSpecでクラスメソッドをスタブ化できます。

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