2
respostas

Meu teste não está passando de forma alguma

Mostra esse erro: java.lang.NullPointerException: Cannot read the array length because "elementData" is null at java.base/java.util.ArrayList.add(ArrayList.java:483) at java.base/java.util.ArrayList.add(ArrayList.java:497) at br.com.alura.adopet.api.service.AdocaoServiceTest.deveriaChamarvalidadoresDeAdocaoAoSolicitar(AdocaoServiceTest.java:81)

@ExtendWith(MockitoExtension.class)
class AdocaoServiceTest {

    @InjectMocks
    private AdocaoService adocaoService;
    @Mock
    private AdocaoRepository adocaoRepository;
    @Mock
    private PetRepository petRepository;
    @Mock
    private TutorRepository tutorRepository;
    @Mock
    private EmailService emailService;
    @Spy
    private List<ValidacaoSolicitacaoAdocao> validacoes = new ArrayList<>();
    @Mock
    private ValidacaoPetComAdocaoEmAndamento validacaoPetComAdocaoEmAndamento;
    @Mock
    private ValidacaoTutorComLimiteDeAdocoes validacaoTutorComLimiteDeAdocoes;
    @Mock
    private Pet pet;
    @Mock
    private Tutor tutor;
    @Mock
    private Abrigo abrigo;

    private SolicitacaoAdocaoDto dto;

    @Captor
    private ArgumentCaptor<Adocao> adocaoArgumentCaptor;

    @Test
    void deveriaSalvarAdocaoAoSolicitar() {
        this.dto = new SolicitacaoAdocaoDto(10L, 20L, "Motivo");
        given(petRepository.getReferenceById(dto.idPet())).willReturn(pet);
        given(tutorRepository.getReferenceById(dto.idTutor())).willReturn(tutor);
        given(pet.getAbrigo()).willReturn(abrigo);
        adocaoService.solicitar(dto);
        then(adocaoRepository)
                .should()
                .save(adocaoArgumentCaptor.capture());
        Adocao adocaoSalva = adocaoArgumentCaptor.getValue();
        assertEquals(pet, adocaoSalva.getPet());
        assertEquals(tutor, adocaoSalva.getTutor());
        assertEquals(dto.motivo(), adocaoSalva.getMotivo());
    }

    @Test
    void deveriaChamarvalidadoresDeAdocaoAoSolicitar() {
        this.dto = new SolicitacaoAdocaoDto(10L, 20L, "Motivo");
        given(petRepository.getReferenceById(dto.idPet())).willReturn(pet);
        given(tutorRepository.getReferenceById(dto.idTutor())).willReturn(tutor);
        given(pet.getAbrigo()).willReturn(abrigo);

        validacoes.add(validacaoPetComAdocaoEmAndamento);
        validacoes.add(validacaoTutorComLimiteDeAdocoes);

        adocaoService.solicitar(dto);
        then(validacaoPetComAdocaoEmAndamento)
                .should()
                .validar(dto);
        then(validacaoTutorComLimiteDeAdocoes)
                .should()
                .validar(dto);
    }
}
2 respostas

Breno,

O problema pode está ocorrendo porque na lista validacoes que está sendo inicializada como null.

Quando você tenta adicionar elementos a essa lista, ocorre um NullPointerException?

Se for isso, para resolver, você pode inicializar a lista validacoes diretamente na declaração.

Assim:

@Spy
private List<Validacao> validacoes = new ArrayList<>();

Ai que está o problema, já está com isso como cloquei no codigo acima e continua dando o mesmo erro