我编写了一个从数据库获取数据的java服务:
public List<Operation> listOperations(String code){
//some business logic...
}
我使用数据库中的代码手动测试了该服务 listOperations("CEA1");
它工作正常,并返回给我一个包含 3 个操作对象的列表(与我的结果相同)数据库)。
现在我想使用 Mockito 和 JUnit 测试我的服务,但我是单元测试的初学者(但我知道单元测试、模拟的概念是什么......),
这是我未完成的测试课:
@RunWith(MockitoJUnitRunner.class)
public class MyserviceTest {
@Mock
private OperationRepository operationRepositoryMock;
@InjectMocks
private BanqueServiceImpl banqueServiceImpl;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testListOfOperation(){
String code = "CEA1";
//to check if my service is working good ,the code 'CEA1' should return a list with 3 Operation object
when(operationRepositoryMock.listOperations(code)). // i dont know how to mock the result
boolean result = banqueServiceImpl.listOperations(code); // i don't know how to assert that the service return a list that contains 3 Operation object
//assertTrue(result);
}
请任何人都可以帮助我完成我的测试代码,请注意我正在一个 Spring Boot 项目中工作。
问候!
最佳答案
首先准备好你的操作 list
Operation sampleOperation = new Operation();
List<Operation> operationList = new ArrayList<Operation>();
operationList.add(sampleOperation);
现在,当调用 listOperations()
方法时,使用 mockito 返回 operationList
when(operationRepositoryMock.listOperations(eq("CEA1"))).thenReturn(operationList);
现在您可以使用断言来验证列表的大小或验证列表的内容
assertThat("size is equal to 1", banqueServiceImpl.listOperations(code).size(), is(1));
关于java - 如何使用 JUnit 和 Mockito 测试从数据库获取数据的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45826001/