2010-07-04 19 views
4

J'aimerais pouvoir tester le code java avec rspec sous jruby, mais je ne vois pas comment définir les attentes sur les appels de méthode java internes. Compte tenu de la java suivante:définir les attentes rspec sur les appels de méthode java internes de jruby

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

    public String hello() { 
    return "yo"; 
    } 
} 

J'aimerais pouvoir faire:

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 

Est-il possible d'intégrer un outil moqueur java dans les coulisses de le faire? Est-ce que quelqu'un l'a déjà fait? Je ne m'inquiète pas si je dois utiliser une syntaxe différente pour définir l'attente (au lieu de 'should_receive' de rspec), mais il devrait au moins être concis.

Répondre

2

JtestR fait exactement ce que vous voulez. C'est une collection de bibliothèques Ruby regroupées avec l'intégration de JRuby afin que les tests en cours d'exécution soient totalement indolores. Elle regroupe Moka et RSpec http://jtestr.codehaus.org/Mocks. Par exemple Rspec pour carte, vous pouvez écrire comme ça se moque:

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