20240208 (목) 개인 주특기 플러스 8일차

2024. 2. 8. 21:03TIL

오늘은 머리도 아파서 제대로 집중하기도 힘들었다.

그래도 오늘 적은 테스트코드는 올려 놓고 간다..

 

PostServiceTest

package lsw.practice.domain.post.service

import io.kotest.assertions.throwables.shouldThrow
import io.kotest.core.spec.style.BehaviorSpec
import io.kotest.extensions.spring.SpringExtension
import io.mockk.clearAllMocks
import io.mockk.every
import io.mockk.junit5.MockKExtension
import io.mockk.mockk
import lsw.practice.domain.comment.repository.CommentRepository
import lsw.practice.domain.exception.ModelNotFoundException
import lsw.practice.domain.post.repository.PostRepository
import lsw.practice.domain.user.repository.UserRepository
import org.junit.jupiter.api.extension.ExtendWith
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.data.repository.findByIdOrNull

@SpringBootTest
@ExtendWith(MockKExtension::class)
class PostServiceTest  : BehaviorSpec({
    extension(SpringExtension)

    afterContainer {
        clearAllMocks()
    }

    // 종속 repository mocking
    val postRepository = mockk<PostRepository>()
//    val commentRepository = mockk<CommentRepository>()
    val userRepository = mockk<UserRepository>()

    // courseService 생성
    val postService = PostServiceImpl(postRepository, userRepository)

    Given("Course 목록이 존재하지 않을때") {

        When("특정 Course를 요청하면") {

            Then("ModelNotFoundException이 발생해야 한다.") {
                val courseId = 1L
                every { postRepository.findByIdOrNull(any()) } returns null

                shouldThrow<ModelNotFoundException> {
                    postService.getPost(courseId)
                }
            }

        }
    }
})

 

UserRepositoryTest

package lsw.practice.domain.user.repository

//임포트를 뭘 해야할지를 모르겠음..

@DataJpaTest
@Transactional
@Import(JpaBaseConfiguration::class)
@Rollback(value = false)
class UserRepositoryTest {

    @Autowired
    lateinit var userRepository: UserRepository

    @Test
    fun dynamicInsertTest() {
        // given
        val newUser = User.builder().username("user").build()

        // when
        val savedUser = userRepository.save(newUser)

        // then
        assertThat(savedUser).isNotNull
    }

    @Test
    fun dynamicUpdateTest() {
        // given
        val newUser = User.builder().username("user").password("password").build()
        userRepository.save(newUser)
        val newPassword = "new password"

        // when
        newUser.updatePassword(newPassword)
        val savedUser = userRepository.save(newUser)

        // then
        assertThat(savedUser.password).isEqualTo(newPassword)
    }
}

 

요기 테스트는 자꾸 컴파일 오류가 떠서 고치려다가 포기한상태..


이제 설 연휴도 끝나고 돌아오면 계~속 프로젝트가 이어질텐데 살짝 걱정도 된다.