2010-02-27 61 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

相关问题