我正在使用 JUnit 和 Mockito 框架测试以下方法。
public Business updateBusiness(BusinessRequest businessRequest, Long businessId) {
String fileURL = fileStorageService.uploadFileToStorage(businessRequest.getFile(), businessRequest.getEmail());
Business business = Business.builder()
.businessId(businessId)
.businessName(businessRequest.getBusinessName())
.email(businessRequest.getEmail())
.fileURL(fileURL)
.status(BusinessStatus.PENDING)
.category(categoryService.getCategoryByID(businessRequest.getCategoryId()))
.description(businessRequest.getDescription())
.build();
businessRepository.save(business);
return business;
}
测试方法:
@Test
public void testUpdateBusiness() {
BusinessRequest mockedBusinessRequest = BusinessRequest.builder()
.email("[email protected]")
.businessName("TestBusinessName")
.role(Role.PARTNER)
.file(new MockMultipartFile("TestName", new byte[]{anyByte()}))
.description("TestBusinessDescription")
.categoryId(1L)
.build();
Business actualBusiness = businessServiceMock.updateBusiness(mockedBusinessRequest, Mockito.eq(1L));
Assertions.assertEquals(mockedBusiness, actualBusiness);
}
这里参数传递为
businessId=1
,但传入方法参数变量的值为0。
如何将值 1L 传递给该方法,还请说明为什么即使我将 1L 传递给该方法,它也会更改为 0L。
如果您逐步进行调试,您可以看到 Mockito.eq(1L) 正在尝试将 Equals 类中所需的对象(可能为 null)与您的 1L 进行比较。返回值为 0(表示 false)。您应该能够将 1L 直接传递到您的函数中。