从jruby对内部java方法调用设置rspec期望

时间:2010-07-04 13:53:29

标签: 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.package.A.new
    a.should_receive(:hello).and_return('yello')
    a.hi
  end
end

是否可以在幕后集成java模拟工具来执行此操作?有人已经这样做了吗?我不在乎是否必须使用不同的语法来设置期望(而不是rspec的'should_receive'),但它至少应该简洁。

1 个答案:

答案 0 :(得分:2)

JtestR完全符合您的要求。它是与JRuby集成捆绑在一起的Ruby库的集合,因此运行测试完全没有设置。

捆绑了Mocha和RSpec http://jtestr.codehaus.org/Mocks。 例如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

More info here