第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何使用 Mockito 為 page.map(mapper::toDto) 模擬

如何使用 Mockito 為 page.map(mapper::toDto) 模擬

慕俠2389804 2023-06-04 17:51:59
我正在junit為我的方法編寫一個測試用例service,它有一個外部調用jpa repository,我想這樣做mock。此方法findall(Pageable pageable)返回page由映射器映射的實體Mapstruct's。但是,NPE當我assert返回時,我得到了一個。可能有一些我遺漏的東西,我不確定如何mock調用這個方法。我試過像這樣編寫測試用例測試用例:public class myTestclass {@Testpublic void testFindAllUser() {User user1 = new User();user1.setId(Long.valueOf(1));User user2 = new User();user2.setId(Long.valueOf(2));List<User> userList = new ArrayList<>();userList.add(user1);userList.add(asset2);Pageable pageable = PageRequest.of(0, 5);Page<User> userPage = new PageImpl<>(userList, pageable, userList.size());Page<UserDto> userDtoPage = null;Mockito.when(userRepositoryMock.findAll(pageable)).thenReturn(userPage);Mockito.when(userPage.map(userMapperMock::toDto)).thenReturn(userDtoPage);// expecting to mock this object in// some other way.assertThat(userService.findAll(pageable)).isEqualTo(userDtoPage); // throws NPE}}我正在為其編寫測試用例的方法:public Page<UserDto> findAll(Pageable pageable) {return userRepository.findAll(pageable).map(userMapper::toDto);}這是我的映射器類:@Mapper(componentModel = "spring", uses = { FarmerMapper.class })public interface UserMapper extends EntityMapper<UserDto, User> {UserDto toDto(User user);User toEntity(UserDto userDto);}mapper模擬該方法toDto以使其返回頁面的正確方法是什么userDto?
查看完整描述

1 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

由于.map使用UserMapper's toDto方法來轉換頁面的每個元素,我模擬了多個元素userMapper來解決這個問題。


因此,我創(chuàng)建了 2 個頁面,一個User用于UserDto. 所以我的測試用例被修改為


@Test

public void testFindAllUser() {

User user1 = new User();

user1.setId(DEFAULT_ID);

User user2 = new User();

user2.setId(2L);

List<User> userList = new ArrayList<>();

userList.add(user1);

userList.add(user2);

Pageable pageable = PageRequest.of(0, 5);

Page<User> userPage = new PageImpl<>(userList, pageable, userList.size());


UserDto userDto1 = new UserDto();

userDto1.setId(Long.valueOf(1));

UserDto userDto2 = new UserDto();

userDto2.setId(Long.valueOf(2));

List<UserDto> userDtoList = new ArrayList<>();

userDtoList.add(userDto1);

userDtoList.add(userDto2);

Page<UserDto> userDtoPage = new PageImpl<>(userDtoList, pageable, userDtoList.size());


Mockito.when(userMapperMock.toDto(user1)).thenReturn(userDto1);

Mockito.when(userMapperMock.toDto(user2)).thenReturn(userDto2); //Mocking the toDto method. 


Mockito.when(userRepositoryMock.findAll(pageable)).thenReturn(userPage);

assertThat(userService.findAll(pageable)).isEqualTo(userDtoPage);

}

現(xiàn)在,如果有更多的元素要添加到頁面,我會對toDto所有元素進行相同的模擬。


查看完整回答
反對 回復 2023-06-04
  • 1 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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