设置来自jruby的内部java方法调用的rspec期望值

设置来自jruby的内部java方法调用的rspec期望值,java,mocking,rspec,jruby,jmock,Java,Mocking,Rspec,Jruby,Jmock,我希望能够在jruby下使用rspec测试java代码,但不知道如何设置内部java方法调用的期望值。给定以下java: public class A { public String hi() { return hello(); } public String hello() { return "yo"; } } 我希望能够做到: describe 'A' do it 'should call hello' do a = some.java.pa

我希望能够在jruby下使用rspec测试java代码,但不知道如何设置内部java方法调用的期望值。给定以下java:

public class A {
  public String hi() {
    return hello();
  }

  public String hello() {
    return "yo";
  }
}
我希望能够做到:

describe 'A' do
  it 'should call hello' do 
    a = some.java.package.A.new
    a.should_receive(:hello).and_return('yello')
    a.hi
  end
end

有可能在幕后集成java模拟工具来实现这一点吗?有人已经这样做了吗?我不在乎是否必须使用不同的语法来设置期望值(而不是rspec的“应该接收”),但它至少应该简洁。

JtestR正是您想要的。它是与JRuby集成捆绑在一起的Ruby库的集合,因此运行测试完全不需要设置

它捆绑了摩卡和RSpec . 例如,Rspec For Map,您可以编写如下模拟:

it "should be able to add an entry to it" do
    @hash_map.put "foo", "bar"
    @hash_map.get("foo").should == "bar"
  end