私は大まかに次のことを行う方法があります:
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は1RSpecでクラスメソッドをスタブ化できます。
User.should_receive(:where).and_return([])