установка ожиданий rspec для внутренних вызовов метода java из jruby - PullRequest
4 голосов
/ 04 июля 2010

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

1 Ответ

2 голосов
/ 15 февраля 2011

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

В комплект входят Мокко и 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

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

...