第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

請(qǐng)教Spring做單元測(cè)試的時(shí)候如果通過(guò)mock虛擬jndi數(shù)據(jù)源?

請(qǐng)教Spring做單元測(cè)試的時(shí)候如果通過(guò)mock虛擬jndi數(shù)據(jù)源?

有只小跳蛙 2019-08-21 18:14:45
請(qǐng)教Spring做單元測(cè)試的時(shí)候如果通過(guò)mock虛擬jndi數(shù)據(jù)源
查看完整描述

3 回答

?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

如何用mockito+spring進(jìn)行單元測(cè)試(1)
  本文只說(shuō)如何使用。
  假設(shè)你和我一樣,也要構(gòu)造一個(gè)系統(tǒng),系統(tǒng)中有若干service,假設(shè)是A,B,C吧。
  其中A 依賴 B 依賴 C。C是最基本的。
  現(xiàn)在需要對(duì)A進(jìn)行單測(cè),但是C需要依賴于外部環(huán)境,而這個(gè)環(huán)境需要復(fù)雜而且不穩(wěn)定的數(shù)據(jù)庫(kù)。怎么辦呢?這時(shí)你就需要mock掉C。
  第一步你需要在appctx文件中申明:
  <bean id="serviceC" name="service_c_Mock" class="org.mockito.Mockito" factory-method="mock">
  <constructor-arg value="com.x.y.x.ServiceC"></constructor-arg>
  </bean>
  需要注意的是bean的id必須要和A和B中autowire時(shí)使用名字一致?;蛘哂妙愋鸵残小?br/>  然后在單測(cè)case中用@Mock或者@Resource引入sercieC。接著在單測(cè)case的Setup中調(diào)用如下語(yǔ)句。
  MockitoAnnotations.initMocks(this);
  這時(shí)你測(cè)試A的方法,A訪問(wèn)B,B訪問(wèn)C時(shí),調(diào)用會(huì)落在mockito生成的一個(gè)代理上。這個(gè)時(shí)候所調(diào)用的任何方法都會(huì)返回null。
  這可能不是你期望的,你可能期望在A用到的那些些方法上,輸入某個(gè)值時(shí)返回某個(gè)特定的值。這個(gè)時(shí)候你需要:
  when().then();
  如果這還不夠,你希望他輸入某個(gè)值的時(shí)候返回特定值,如果輸入的值不是特定值的時(shí)候,返回正常邏輯的值,你需要spy,并傳入一個(gè)serviceC的實(shí)現(xiàn)。
  這個(gè)方法也解決了那個(gè)對(duì)于不mock的方法進(jìn)行返回的問(wèn)題。

查看完整回答
反對(duì) 回復(fù) 2019-08-24
  • 3 回答
  • 0 關(guān)注
  • 1114 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)