@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();
    }

}

results matching ""

    No results matching ""