0

rspecを使用して以下のコードを評価しようとしています。

与えられた:

   # book = ...
   Rails.logger.info book.inspect

上記のコードは、戻り型の値を出力しますboolean{:foo=>false}

   eval(book[:foo]).should be_false

しかし、それはうまくいかないようです。rspecを実行しようとすると、次の例外がスローされます。

 Failure/Error: eval(book[:foo]).should be_false
 TypeError:
   can't convert false into String

それで、どうすればブール値をメソッドに評価できますか?たとえば、最終結果は同等になりますか?

4

1 に答える 1

2

eval渡された引数を実行して、Rubyコードとして解釈します。オブジェクトにはどのRubyコードが含まれていると思いfalseますか?

eval(false)   # cannot execute false object
eval("false") # executes a string and returns false object

違いを見ます?

正確に何をテストしているのかわかりませんが、簡単に試すことができます

book[:foo].should be_false
于 2012-07-23T10:26:40.497 に答える