既存のRubyのコード:rspecテストケースを書くときにrubyメソッドのローカル変数を上書きする方法は?
def book_details
book_count = Book.count
while (book_count > 1)
# Do something
end
end
私はbook_details機能でbook_count値を設定し、RSpecのテストケースを書きたいです。出来ますか?はいの場合、どうですか?
it 'Should return 1 book details only' do
allow(Model).to receive(book_count).and_return(1)
# Do something
end
しかし、これは#
は 'てみ許可(書籍)を受信.TO(::数)あなたのコードは、データベースと対話しているので、あなたのテストは、コードが対話するために、実際のレコードを作成する必要があり.and_return(1)' 。 – ndn
実装の内部(プライベート関数、ローカル変数などを含みますが、これに限定されません)をテストしている場合は、間違っているので、設計全体を確認する必要があります。ここでは、適切なテストは次のようになると考えています。1. _single_ 'Book'インスタンスを作成してテストします。 2. 2つの 'Book'インスタンスを作成してテストします。 – mudasobwa
ありがとう@ndn - それは宝石のように動作します。 –