Ruby / Rails:eval似乎不起作用

时间:2012-07-23 10:22:51

标签: ruby-on-rails ruby rspec eval

尝试使用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

那么,我如何评估一个方法的布尔值,比如我的最终结果是等价的呢?

1 个答案:

答案 0 :(得分: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