提问人:Aniket Mhatre 提问时间:11/12/2023 更新时间:11/12/2023 访问量:39
Mockito.eq(1) 将值作为 0 发送到函数
Mockito.eq(1) sending value as 0 to the function
问:
我正在使用 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);
}
这里传递的参数是 0,但方法参数变量中的值是 0。businessId=1
我怎样才能将值 1L 传递给方法,并请说明为什么即使我将 1L 传递给方法,它也会更改为 0L。
答:
0赞
Matthew Sexton
11/12/2023
#1
如果你单步调试,你可以看到 Mockito.eq(1L) 正在尝试将 Equals 类中想要的 Object(可能是 null)与你的 1L 进行比较。如果为 false,则返回值为 0。您应该能够将 1L 直接传递到您的函数中。
评论
0赞
Aniket Mhatre
11/12/2023
谢谢! 工程Business actualBusiness = businessServiceMock.updateBusiness(mockedBusinessRequest, 1L);
0赞
Matthew Sexton
11/12/2023
很高兴我能帮上忙。我强烈建议在 Eclipse 或您喜欢使用的任何 IDE 中进行调试。YouTube 上有一些关于如何使用调试的精彩教程(我推荐 Coding with John)。调试允许您直接进入 Mockito.eq(1L) 以查看它正在执行的操作。祝您编码愉快!
评论
businessServiceMock
fileStorageService
categoryService
businessRepository
new MockMultipartFile("TestName", new byte[]{anyByte()})
byte[] arr = new byte[2];
new MockMultipartFile("TestName", arr)
any
等方法不能用作返回值。它们仅在您在 Mockito 和调用中使用的方法调用中工作,而不是在您实际调用的 Builder 或构造函数(或其他任何内容)中工作。anyByte
when
verify