테스트 코드 추가작성, verify로 목객체 작동 검증 확인

This commit is contained in:
jinia91
2022-03-09 16:33:17 +09:00
parent a45e3c5166
commit e2b67ed513

View File

@@ -4,18 +4,12 @@ import myblog.blog.article.domain.Article
import myblog.blog.tags.domain.ArticleTagList
import myblog.blog.tags.domain.Tags
import org.junit.jupiter.api.extension.ExtendWith
import org.mockito.InjectMocks
import org.mockito.Mock
import org.mockito.junit.jupiter.MockitoExtension
import myblog.blog.tags.repository.ArticleTagListsRepository
import myblog.blog.tags.repository.TagsRepository
import org.junit.jupiter.api.Test
import org.mockito.BDDMockito
import org.mockito.Mockito
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
import org.mockito.kotlin.withSettings
import org.mockito.*
import org.mockito.kotlin.*
import java.lang.reflect.Method
import java.util.*
import kotlin.test.expect
@@ -31,7 +25,7 @@ class TagsServiceTests {
lateinit var tagsService: TagsService
@Test
fun`기존 태그 존재시 조회하기`() {
fun`기존 태그 존재시 성공적으로 tagList 저장하기`() {
// given
val article = Article.builder().build()
val names = "[{\"value\":\"1\"},{\"value\":\"2\"}]"
@@ -39,19 +33,15 @@ class TagsServiceTests {
.thenReturn(Optional.of(Tags("1")))
whenever(tagsRepository.findByName("2"))
.thenReturn(Optional.of(Tags("2")))
val mock1 = mock<ArticleTagListsRepository>(lenient = true){
on {save(ArticleTagList(article, Tags("1"))) } doReturn ArticleTagList(article,Tags("1"))
}
val mock2 = mock<ArticleTagListsRepository>(lenient = true){
on {save(ArticleTagList(article, Tags("2"))) } doReturn ArticleTagList(article,Tags("2"))
}
// when
// when
tagsService.createNewTagsAndArticleTagList(names, article);
//then
val capturedArticleTagList = ArgumentCaptor.forClass(ArticleTagList::class.java)
verify(articleTagListsRepository, times(2)).save(capturedArticleTagList.capture())
}
@Test
fun`신규 태그시 저장하기`() {
fun`신규 태그시 태그 저장후 성공적으로 tagList도 저장하기`() {
// given
val article = Article.builder().build()
val names = "[{\"value\":\"1\"},{\"value\":\"2\"}]"
@@ -67,13 +57,20 @@ class TagsServiceTests {
val mock2 = mock<TagsRepository>(lenient = true){
on {save(tags2) } doReturn tags2
}
val mock3 = mock<ArticleTagListsRepository>(lenient = true){
on {save(ArticleTagList(article, tags1)) } doReturn ArticleTagList(article,tags1)
}
val mock4 = mock<ArticleTagListsRepository>(lenient = true){
on {save(ArticleTagList(article, tags2)) } doReturn ArticleTagList(article,tags2)
}
// when
tagsService.createNewTagsAndArticleTagList(names, article);
//then
val capturedArticleTagList = ArgumentCaptor.forClass(ArticleTagList::class.java)
verify(articleTagListsRepository, times(2)).save(capturedArticleTagList.capture())
}
@Test
fun `아티클 관련 태그 전부 삭제 성공`(){
//given
val article = Article.builder().build()
//when
tagsService.deleteAllTagsWith(article)
//then
verify(articleTagListsRepository, times(1)).deleteByArticle(article)
}
}