20240208 (목) 개인 주특기 플러스 8일차
2024. 2. 8. 21:03ㆍTIL
오늘은 머리도 아파서 제대로 집중하기도 힘들었다.
그래도 오늘 적은 테스트코드는 올려 놓고 간다..
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)
}
}
요기 테스트는 자꾸 컴파일 오류가 떠서 고치려다가 포기한상태..
이제 설 연휴도 끝나고 돌아오면 계~속 프로젝트가 이어질텐데 살짝 걱정도 된다.
'TIL' 카테고리의 다른 글
20240214 (수) 대용량 트래픽 프로젝트 - 동시성 제어 프로젝트 1일차 (0) | 2024.02.14 |
---|---|
20240213 (화) 개인 주특기 플러스 9일차 (0) | 2024.02.13 |
20240207 (수) 개인 주특기 플러스 7일차 (0) | 2024.02.07 |
20240206 (화) 개인 주특기 플러스 6일차 (1) | 2024.02.06 |
20240205 (월) 개인 주특기 플러스 5일차 (1) | 2024.02.05 |