2017-09-28 2 views
0

Byte Buddyを使用してプロキシオブジェクトを作成しようとしています。私は実際にどのクラスでも依存関係をモックしたいと思っています。そして、その依存オブジェクトに対してどのメソッドが呼び出されても、それは呼び出し側に決められた値を返します。バイトバディを使用してプロキシオブジェクトを作成する

public class Person{ 
private String name; 
private Address address; 

public Person(String name, Address address){ 
    this.name = name; 
    this.address = address; 
} 
public String getAddress(){ 
    return (address == null) "" : address.getStreet(); 
} 
} 

===========================================私はPersonクラスに住所をモックとしたい。この上記の例では============================

public class Address { 
    private String street; 
    public String getStreet() { return street; } 

といつでも人.getAddress()メソッドが呼び出されます。私は戻り値の型に基づいて値を動的に返したい。 私はByte Buddyを初めて利用しています。私は、サブクラスを作成することができますが、メソッドの型を動的に返す方法を確かめず、決められた値を返します。

答えて

0

コンストラクタに提供された値を注入するチャンスがありますか?この場合は、あなただけのAddressのためのサブクラスを作成することができます

Address address = new ByteBuddy() 
    .subclass(Address.class) 
    .method(any()).intercept(MethodDelegation.to(MyInterceptor.class)) 
    .make() 
    .load(Address.class.getClassLoader()) 
    .getLoaded() 
    .newInstance(); 

に似たデリゲートで:

public class MyInterceptor { 
    @RuntimeType 
    public static Object intercept(@Origin Method method) { 
    // create some return value or null for void 
    } 
} 

単にコンストラクタにこのオブジェクトを提供します。

+0

ご回答ありがとうございます。それは私のために働いた、私はgit hub wikiで同様の例と説明を見つけました。バイトバディにもう少し時間を投資する必要があります。 – Andy

関連する問題