@MockValue
Posted by Bruce Tsai
設定並定義比對處理假資料的方式
透過 AOP 記錄呼叫的方法中輸入及輸出的內容。可設定僅記錄輸出或僅記錄輸入內容。需在 spring 設定中設定 AOP 相關的設定,配合 MockValueAdvice
使用。
範例
- spring 設定檔
<aop:config proxy-target-class="true">
<aop:pointcut
id="mockValueProxy"
expression="execution(* com.fet.crm.eservice..*.*(..))
and @annotation(foundation.core.generic.annotation.aop.MockValue)"
/>
<aop:advisor
advice-ref="mockValueAdvice"
pointcut-ref="mockValueProxy" />
</aop:config>
<bean id="mockValueAdvice"
class="foundation.core.generic.aop.MockValueAdvice" />
匹配鍵值設定方式
- 若有支援 ParameterNameDiscoverer 時,可用輸入參數名稱進行匹配
例:
@MockValue(keys = {"#accountIdVo.AccountId", "#accountIdVo.BizEntity"})
- 若不支援 ParameterNameDiscoverer 時,以參數順序進行匹配,起始數值為 1。
例:
@MockValue(keys = {"#1.AccountId", "#1.BizEntity"})
- 若需匹配 method 本身的 instance 時,以
this
關鍵字進行匹配例:
@MockValue(keys = {"#this.subscriberId", "#this.productType"})
定義匹配方式
@TestOnlyComponent
public class AccountFacadeWrapper implements IAccountFacade {
//@MockValue(keys = {"#1.AccountId", "#1.BizEntity"})
@MockValue(keys = {"#accountIdVo.AccountId", "#accountIdVo.BizEntity"})
public FetAccountInfoVo retvFetAccountInfo(
UserVo userVo,
AccountIdVo accountIdVo) {
throw new UnsupportedOperationException();
}
}