Mock NullPointerException

Remi0110:

Trato de hacer una prueba unitaria para el método getPersonsFromAddress () en mi servicio, trato de burlarse del modelo de objetos, pero cuando ejecuto la prueba de una NullPointerException aparece en el servicio cuando model.getPersons () se llama.

Aquí está mi servicio con el método getPersonsFromAddress ():

@Service
public class ChildAlertService {

    @Autowired
    private Model model;

    @Autowired
    private Util util;

     public List<Person> getPersonsFromAdress (String address) {
         List<Person> listPersons = model.getPersons();
         List<Person> listPersonsFromAddress = new ArrayList<>();
         for (Person person : listPersons) {
             if(person.getAddress().contains(address)) {                    
                 listPersonsFromAddress.add(person);
                }
         }       
            return listPersonsFromAddress;
        }

Aquí está mi prueba:

@ExtendWith(MockitoExtension.class)
public class ChildAlertServiceTest {

    private static ChildAlertService childAlertService;

    @Mock
    private Model model;

    @BeforeAll
    private static void setUp() {
        childAlertService = new ChildAlertService();
    }

    @Test
     public void testGetPersonsFromAdress () {
        List<Person> listPersons = new ArrayList<>();
        Person person1 = new Person();
        person1.setFirstName("John");
        person1.setFirstName("Boyd");
        person1.setAddress("1509 Culver St");


        listPersons.add(person1);

        Person person2 = new Person();
        person2.setFirstName("Roger");
        person2.setFirstName("Boyd");
        person1.setAddress("1509 Culver St");

        listPersons.add(person2);

        Person person3 = new Person();
        person3.setFirstName("Jonanathan");
        person3.setFirstName("Marrack");
        person3.setAddress("29 15th St");

        listPersons.add(person3);

        when(model.getPersons()).thenReturn(listPersons);

        String address = "1509 Culver St";
        List <Person> listPersonResult = childAlertService.getPersonsFromAdress(address);
        assertNotNull(listPersonResult);
        }

}

Gracias por tu ayuda.

Lesiak:

Nunca se ha inicializado modelen ChildAlertServiceen sus pruebas. Su Mock nunca se utiliza.

En su código prod que se basan en la inyección de campo.

Ver: ¿Qué es exactamente Inyección de campo y cómo evitarlo?

El enfoque más limpio es el uso de la inyección de constructor en su servicio, y el uso de ese constructor en sus pruebas (ya sea manualmente o mediante @InjectMocks)

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=341755&siteId=1
Recomendado
Clasificación