inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링과 JPA 기반 웹 애플리케이션 개발

회원 가입 리팩토링 및 테스트 영상 질문입니다.

351

짤짤이

작성한 질문수 3

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));

}

}

thymeleaf java spring-boot JPA spring

답변 1

0

백기선

import 문이 겹쳐서 그래요. 다른 import 문 중에 then을 이미 static import하는 곳이 있습니다. 그래서 둘 중 하나는 명시적으로 어디에 있는 then인지 직접 써줘야 하는거죠.

Study 개설하는 로직에 대해서 궁금점이 있습니다.

0

55

1

앱 재시작 후 회원가입

0

102

1

app.host 관련 질문이 있습니다

0

97

1

강의 버전 정보

0

125

1

event, study 참조

0

219

2

비밀번호 변경 로직 질문있습니다.

0

135

1

프로필 수정 처리 merge 질문입니다.

0

106

1

회원가입 성공 후 redirect이동시 권한 질문

0

490

3

HtmlEmailService 개발하다 생긴 의문입니다

0

249

2

postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다

0

430

2

수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다

0

260

2

[긴급-재업로드]수업질문 로그인 안 되는 문제

0

235

1

[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요

0

277

1

cropper 오류 문제로 질문드립니다..

0

285

2

authentication관련 질문...

0

495

2

모임참가 취소 할때 로직 질문

0

350

3

안녕하세요 기선님 질문이있습니다..

0

229

1

HTML코드 및 강의 중간자료들

0

679

3

springSecurity

0

520

2

버전 질문입니다.

0

300

1

부트스트랩, css

0

353

2

영속성 컨텍스트 질문

0

248

2

다시 강의를 보니 드는생각..

0

350

2

5:50에 나오는 HTML코드는 어디서 찾을 수 있나여?

0

312

1