2010-02-27 63 views
0

我正在使用RSpec和JRuby測試Java類。如何在JRuby中導入Java類中的超級調用以測試

如何在我的RSpec測試中將導入的Java類中的super調用超級調用?

例如:

我有2個Java類:

public class A{ 
    public String foo() { 
    return "bar"; 
    } 
} 

public class B extends A 
    public String foo() { 
    // B code 
    return super.foo(); 
    } 
} 

我只是想測試中B.foo的代碼,而不是代碼A.foo使用JRuby。如何在我的RSpec測試中將超級類方法的調用截斷?

RSpec的測試:

java_import Java::B 

describe B do 
    it "should not call A.foo" do 
    # some code to stub out A.foo 
    b = B.new 
    b.foo.should_not == "bar" 
    end 
end 

我曾嘗試,包括與B的類新富方法希望它擊中了模塊化設計方法,第一,但乙還是使得對於A的插入模塊技術的呼叫的模塊適用於Ruby,但不適用於JRuby和導入的Java類。

任何其他想法,以超出超類方法來讓我的RSpec測試通過?

回答

1

我不認爲你可以,而且這似乎不合邏輯。 super.foo()的foo()方法調用是其實現的一部分 - 原則上,它可能是正確的行爲所必需的。

也許你想單獨測試的功能需要分離成一個單獨的方法,並從foo()和你的測試中調用?

+0

我同意重構測試可能是最簡單的解決方案。有時,如果我使用供應商庫,重構更爲困難。我希望我仍然可以在JRuby中這樣做,因爲這是Ruby中的一個選項。有另一個測試工具很好。 – 2010-02-27 20:25:22

相關問題