请问如何对子方法中的对象进行mock?

如何对子方法中的对象进行mock


慕田峪9158850
浏览 1744回答 4
4回答

www说

在进行对象方法的引用时,方法中参数的个数,参数的数据类型与原方法中定义的要一致,否则编译器会出错。注意构造方法后面括号内带几个参数或者不带参数

至尊宝的传说

看你的mysql当前默认的存储引擎:mysql> show variables like '%storage_engine%';你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):mysql> show create table 表名;

慕姐8265434

mock测试方法用于构造对象,而不是你说的方法比如,你现在要调用数据库,但这块也许还没完成,无法用orm框架进行映射,你就可以先new一些这样的对象,将它们保存或当作参数传入等比如某接口中(UserDao)你有一个方法叫:queryUser(String name),但你的真正实现未完成,你就可以先写一个Mock类,MockUserDaoImplqueryUser(String name){User user = new User();user.setName...user.setPassword...}你说的两种方法,不需要mock,直接调用方法,传入参数,然后利用断言assert*

斯蒂芬大帝

因为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 {@Testpublic 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!"));}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
Photoshop