본문 바로가기

Project/GameFriendApp

Ggamf : 파티방 생성 Junit Test

 

 

파티방 생성 Junit Test

 

 

<작업계획>

Test 환경 구축

Dummy 데이터 설정

Test 코드 작성

 

 

 

 

Test 환경 구축

@Sql("classpath:db/truncate.sql")
@ActiveProfiles("test")
@AutoConfigureMockMvc
@SpringBootTest(webEnvironment = WebEnvironment.MOCK)
public class PartyApiControllerTest extends DummyEntity {

    private static final String APPLICATION_JSON_UTF8 = "application/json; charset=utf-8";

    @Autowired
    private MockMvc mvc;

    @Autowired
    private ObjectMapper om;

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private GameCodeRepository gameCodeRepository;

    @BeforeEach
    public void setUp() {

    }
}

 

 

 

 

Dummy 데이터 설정

 

아래와 같이 DummyEntity 메서드를 만들어두면

public abstract class DummyEntity {
    protected User newUser(String username) {
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        String encPassword = passwordEncoder.encode("1234");
        User user = User.builder()
                .username(username)
                .password(encPassword)
                .name("유저이름")
                .phone("010-1234-5678" + username)
                .nickname("nick" + username)
                .email(username + "@nate.com")
                .phoneChecked(true)
                .photo("내사진입니다")
                .intro("안녕하세여 유저입니다")
                .stateId(1L)
                .role(UserEnum.USER)
                .build();
        return user;
    }
}

 

 

테스트 시 아래처럼 사용할 수 있다 :)

    @BeforeEach
    public void setUp() {
    	// User : 유저
        User ssar = userRepository.save(newUser("ssar"));
        User cos = userRepository.save(newUser("cos"));
        User lala = userRepository.save(newUser("lala"));
        // GameCode : 게임코드
        GameCode etc = gameCodeRepository.save(newGameCode("etc"));
        GameCode LoL = gameCodeRepository.save(newGameCode("LoL"));
        GameCode starcraft = gameCodeRepository.save(newGameCode("starcraft"));
        GameCode battleground = gameCodeRepository.save(newGameCode("battleground"));
    }

 

 

 

 

Test 코드 작성

    @WithUserDetails(value = "ssar", setupBefore = TestExecutionEvent.TEST_EXECUTION)
    @Test
    public void createRoom_test() throws Exception {
        // given
        Long gameCodeId = 2L;
        CreateRoomReqDto createRoomReqDto = new CreateRoomReqDto();
        createRoomReqDto.setGameCodeId(gameCodeId);
        createRoomReqDto.setRoomName("초보만오세요");
        createRoomReqDto.setTotalPeople(5L);
        String requestBody = om.writeValueAsString(createRoomReqDto);
        System.out.println("테스트 : " + requestBody);

        // when
        ResultActions resultActions = mvc
                .perform(MockMvcRequestBuilders.post("/s/api/party/create/" + gameCodeId)
                        .content(requestBody)
                        .contentType(APPLICATION_JSON_UTF8));
        String responseBody = resultActions.andReturn().getResponse().getContentAsString();
        System.out.println("테스트 : " + responseBody);

        // then
        resultActions.andExpect(MockMvcResultMatchers.status().isCreated());
        resultActions.andExpect(MockMvcResultMatchers.jsonPath("$.data.roomName").value("초보만오세요"));
    }

 

 

 

성공 :)