когда я пытался запустить тест, он выбрасывает нулевой указатель на userService.setUser (user);и попытался запустить его в режиме отладки, он просто инициировал мои издевательства как нулевые.я что-то упускаю?кто-нибудь еще сталкивался с подобной проблемой раньше?я попытался использовать @spy на userService, но не повезло.
// пакет SERVICE com.ecommerce.munna.user;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public void setUser(User user) {
userRepository.save(user);
}
public List<User> getAllUsers() {
List<User> userList = new ArrayList<>();
userRepository.findAll()
.forEach(userList::add); //findAll is an interable so convert this into list to send it back
return userList;
}
/*public User getUserByUserNameandPassword(String userName, String password)
{
return userRepository.findByIdandPassword(userId,password);
}*/
}
// TEST
package com.ecommerce.munna.user;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
//
@RunWith(MockitoJUnitRunner.class)
class UserServiceTest {
@Mock
private TestBuilder testBuilder;
@Mock
private User user;
@Mock
private UserRepository userRepository;
@InjectMocks
private UserService userService;
@Test
void setUser_shouldStoreNewuserInRepository() throws Exception {
ArrayList<User> userList= new ArrayList<User>();
user=testBuilder.tetsUserBuilder();
user.setId(1L);
userList.add(user);
user.setId(2L);
userList.add(user);
userService.setUser(user);
when(userRepository.findAll()).thenReturn(userList);
assertEquals(2,userList.size());
}
}
ТЕСТ БИЛДЕР
package com.ecommerce.munna.user;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TestBuilder {
// @Autowired User user;
// @Bean
public static User tetsUserBuilder(){
User user=new User.UserBuilder()
.id(1L)
.userName("munnaTest")
.password("testPassword")
.firstName("munna")
.lastName("Gunturu")
.dateOfBirth("06/06/1999")
.eMail("m@yahoo.com")
.gender("Male")
.build();
return user;
}
}