установка ожиданий rspec для внутренних вызовов методов java из jruby

Я хотел бы иметь возможность протестировать код Java с помощью rspec под jruby, но не вижу, как установить ожидания для внутренних вызовов методов 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 за кулисами? Кто-то уже так делал? Мне все равно, придется ли мне использовать другой синтаксис для установки ожидания (вместо «should_receive» rspec), но он должен быть, по крайней мере, кратким.


person Toby Crawley    schedule 04.07.2010    source источник


Ответы (1)


JtestR делает именно то, что вы хотите. Это набор библиотек Ruby, объединенных вместе с интеграцией JRuby, так что запускать тесты совершенно безболезненно.

Он объединяет Mocha и RSpec http://jtestr.codehaus.org/Mocks. Например, Rspec для Map, вы можете написать такие макеты:

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

Подробнее здесь

person David Levin    schedule 15.02.2011