亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問如何對子方法中的對象進行mock?

請問如何對子方法中的對象進行mock?

慕田峪9158850 2019-08-20 18:14:51
如何對子方法中的對象進行mock
查看完整描述

4 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

在進行對象方法的引用時,方法中參數的個數,參數的數據類型與原方法中定義的要一致,否則編譯器會出錯。注意構造方法后面括號內帶幾個參數或者不帶參數

查看完整回答
反對 回復 2019-08-24
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

看你的mysql當前默認的存儲引擎:
mysql> show variables like '%storage_engine%';

你要看某個表用了什么引擎(在顯示結果里參數engine后面的就表示該表當前用的存儲引擎):
mysql> show create table 表名;

查看完整回答
反對 回復 2019-08-24
?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

mock測試方法用于構造對象,而不是你說的方法
比如,你現在要調用數據庫,但這塊也許還沒完成,無法用orm框架進行映射,你就可以先new一些這樣的對象,將它們保存或當作參數傳入等
比如某接口中(UserDao)你有一個方法叫:queryUser(String name),但你的真正實現未完成,你就可以先寫一個Mock類,MockUserDaoImpl
queryUser(String name){
User user = new User();
user.setName...
user.setPassword...
}

你說的兩種方法,不需要mock,直接調用方法,傳入參數,然后利用斷言
assert*

查看完整回答
反對 回復 2019-08-24
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

因為Mockito使用繼承的方式實現mock的,用CGLIB生成mock對象代替真實的對象進行執行,為了mock實例的方法,你可以在subclass中覆蓋它,而static方法是不能被子類覆蓋的,所以Mockito不能mock靜態方法。
但PowerMock可以mock靜態方法,因為它直接在bytecode上工作,類似這樣:
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.testng.PowerMockTestCase;
import org.testng.Assert;
import org.testng.annotations.Test;
@PrepareForTest(AbstractAnimal.class)
public class AbstractAnimalTest extends PowerMockTestCase {
@Test
public void shouldGetMockedHello() {
PowerMockito.mockStatic(AbstractAnimal.class);
PowerMockito.when(AbstractAnimal.getHello()).thenReturn("Hello mocked animal world!");
String greetings = AbstractAnimal.getHello();
Assert.assertTrue(greetings.equals("Hello mocked animal world!"));
}
}



查看完整回答
反對 回復 2019-08-24
  • 4 回答
  • 0 關注
  • 1887 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號