2012-04-02 109 views
0

一個實例變量,比方說,我有一個直接引用實例變量的方法:存根採用摩卡

class MyClass 
    def method1 
    puts @instance_var 
    end 
end 

我怎樣才能存根出在Test::Unit測試使用mocha的的@instance_var價值?

回答

-1

你不能。這是你不應該直接訪問ivars的衆多原因之一。

+1

謹慎闡述? http://stackoverflow.com/questions/9981614/is-it-bad-form-to-use-instance-vars-directly-in-ruby – m33lky 2012-04-02 18:18:36

+1

面向對象是關於消息發送。訪問伊娃不是一個消息發送,因此它不是面向對象。 Ruby是一種面向對象的語言,所以爭取面向對象的設計是非常有意義的,不要訪問ivars。或者,按照OO的不同定義:OOP與面向ADT的編程的區別在於表示獨立性,特別是支持多重表示的能力。訪問ivars打破了表示獨立性和多重表示。除此之外,它還會中斷繼承,因爲您無法覆蓋ivars,只能使用方法。 – 2012-04-02 23:59:03

+0

我認爲你在談論原始OOP。 OOP的現代定義已經消失。不知道你的意思是不能覆蓋ivars。 Ruby是一種動態類型語言,不能將子對象放入ivar中?我在這裏有一個具體的案例。我不打算外面的世界來訪問那個特定的伊娃。 – m33lky 2012-04-03 03:51:36