2012-07-23 29 views
0

我試圖使用rspec評估下面的代碼。Ruby/Rails:eval似乎不工作

考慮:

# 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 

那麼,如何評估一個布爾值的方法,比如我的最終結果將是等效的?

+2

嗯,你爲什麼需要'這裏eval'?你想達到什麼目的?我想簡單的'book [:foo]。should be_false'應該就夠了。你得到一個錯誤的原因是'eval'接受一個字符串作爲參數,並將該字符串評估爲Ruby代碼。 – 2012-07-23 10:25:45

回答

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 
+0

感謝您的快速響應!有效 ! – diya 2012-07-23 10:35:47