작성
·
298
0
@DisplayName("회원 가입 처리 - 입력값 정상")
@Test
void signUpSubmit_with_correct_input() throws Exception {
mockMvc.perform(post("/sign-up")
.param("nickname", "keesun")
.param("email", "email@gmail.com")
.param("password", "12345678")
.with(csrf()))
.andExpect(status().is3xxRedirection())
.andExpect(view().name("redirect:/"));
assertTrue(accountRepository.existsByEmail("email@gmail.com"));
BDDMockito.then(JavaMailSender).should().send(any(SimpleMailMessage.class));
}
회원 가입 처리 - 입력값 정상 테스트의 마지막줄인
BDDMockito.then(JavaMailSender).should().send(any(SimpleMailMessage.class));
쪽이 인식을 못하고 빨간줄을 내보냅니다.
영상에서는
then(JavaMailSender).should().send(any(SimpleMailMessage.class));
코드인데 then 앞에 BDDMockito.를 선언 안하면 아예 인식을 못하더군요.
BDDMockito를 사용하여 then을 인식시키면
에러가 뜹니다.
.send(any(SimpleMailMessage.class)); 센드쪽에서 any들어가는걸 인식 못하는것 같은데 junit을 써본적이 없어서 이부분을 잘 모르겠습니다.
어디가 잘못 된건지 알 수 있을까요???
spring boot version 2.4.2 입니다.
java 11입니다.
=======================================================================================
package com.studyolle;
import static org.hamcrest.CoreMatchers.any;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import javax.mail.internet.MimeMessage;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.BDDMockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.test.web.servlet.MockMvc;
import com.studyolle.account.AccountRepository;
@SpringBootTest
@AutoConfigureMockMvc
class AppTests {
@Autowired private MockMvc mockMvc;
@Autowired private AccountRepository accountRepository;
@MockBean
JavaMailSender JavaMailSender;
@DisplayName("회원 가입 화면 보이는지 테스트")
@Test
void signUpForm() throws Exception {
mockMvc.perform(get("/sign-up"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(view().name("account/sign-up"))
.andExpect(model().attributeExists("signUpForm"));
}
@DisplayName("회원 가입 처리 - 입력값 오류")
@Test
void signUpSubmit_with_wrong_input() throws Exception {
mockMvc.perform(post("/sign-up")
.param("nickname", "keesun")
.param("email", "email..")
.param("password", "12345")
.with(csrf()))
.andExpect(status().isOk())
.andExpect(view().name("account/sign-up"));
}
@DisplayName("회원 가입 처리 - 입력값 정상")
@Test
void signUpSubmit_with_correct_input() throws Exception {
mockMvc.perform(post("/sign-up")
.param("nickname", "keesun")
.param("email", "email@gmail.com")
.param("password", "12345678")
.with(csrf()))
.andExpect(status().is3xxRedirection())
.andExpect(view().name("redirect:/"));
assertTrue(accountRepository.existsByEmail("email@gmail.com"));
BDDMockito.then(JavaMailSender).should().send (any(SimpleMailMessage.class));
}
}
답변 1
0
import 문이 겹쳐서 그래요. 다른 import 문 중에 then을 이미 static import하는 곳이 있습니다. 그래서 둘 중 하나는 명시적으로 어디에 있는 then인지 직접 써줘야 하는거죠.