분류 전체보기161 [MockK] 메서드 호출 순서 검증하기 객체의 메서드를 여러 번 호출하는 로직이 있을 때, 사용되는 메서드를 순서대로 확인하고 싶을 때가 있을 수 있다. (하지만 구현 사항을 너무 깊게 확인하는 것일 수 있으니 정말 필요한 검증인지 충분히 고민해봐야한다) MockK를 사용할 때는 verifySequence를 사용하면 mock object의 호출 순서를 확인할 수 있다. import io.kotest.core.spec.style.DescribeSpec import io.mockk.mockk import io.mockk.verifySequence class MyObject { fun fun1(value: Any) { println(value) } fun fun2(value: Any) { println(value) } fun fun3(value: .. 2022. 4. 15. Github Actions actions/setup-java /usr/bin/tar 실행 오류 Java/Kotlin 프로젝트를 빌드할 때 사용하는 Java 환경을 셋업하기 위해 사용되는 Github Actions의 actions/setup-java 사용 중에 다음과 같은 오류를 만났다. 이 오류는 붉은 색으로 칠해진 Error 로그를 볼게 아니라 그 위에를 봐야한다. 29번 째 라인을 보면 checksum이 맞지 않다는 오류 로그를 확인할 수 있는데, actions/setup-java의 cache 기능과 관련하여 발생한 오류이다. 관련하여 actions/setup-jave Github issue가 올라온 것을 확인할 수 있었다. https://github.com/actions/setup-java/issues/305 Fail to setup java in PR checks due to bad che.. 2022. 4. 15. [MockK] 인자 값 그대로 리턴하기 Mock 객체를 사용하다보면 JpaRepository.saveAll과 같이 입력값을 그대로 리턴해주고 싶은 경우가 생길 수 있다. 이 경우 returnsArgument를 사용하면 된다. interface TestTarget { fun function(arg1: Any, arg2: Any): Any } internal class MyRepositoryMockTest : DescribeSpec({ it(" returnsArgument 0은 첫번째 인자를 리턴한다") { // given val testTargetMock= mockk() // when every { testTargetMock.function(any(), any()) } returnsArgument 0 // then testTargetMock.f.. 2022. 4. 14. jabba global JDK 설정하기 jabba를 통해 설치한 JDK들 중 특정 버전을 사용할 때는 jabba use 커맨드를 사용하면 되지만 global JDK를 설정하기 위해서는 default alias를 걸어주어야 한다. 아래와 같이 openjdk 17, 11 버전이 설치되어있다고 했을 때 $ jabba ls openjdk@1.17.0 openjdk@1.11.0-2 17 버전의 JDK를 global JDK로 설정하고자 한다면 아래와 같이 default alias를 설정해주면 된다. $ jabba alias default openjdk@1.17.0 $ jabba current openjdk@1.17.0 $ java --version openjdk 17 2021-09-14 OpenJDK Runtime Environment (build 17.. 2022. 4. 9. 구글은 어떻게 일하는가를 읽고... 지금과 같이 소프트웨어가 세상에 영향을 미치는 영향이 큰 시기에 제품을 만드는, 특히 스타트업에서 제품을 만드는 소프트웨어 개발자로서 구글이라는 성공한 빅테크 기업의 방식을 엿보는 것은 매우 흥미로웠다. 책에서 다루는 주제가 매우 넓기도하고(심지어 퇴사 희망자를 다루는 방법까지...) 내용도 많다보니 모든 내용을 여기에 적을 순 없지만, 책 뒤표지에 있는 목록(긍정의 문화를 세워라, 폐쇄보다는 공개를 기본으로 설정하라, 배움을 멈추지 않는 사람을 채용하라, 고개만 끄덕이는 인형을 조심해라, 계급이 아니라 관계를 형성하라, 일단 내어놓은 다음 개선하라)만 보더라도 충분히 흥미롭고 우리 조직은 어떤지 생각해볼만한 내용들이고 구글이라는 기업이 어떻게 일하고 있고 어떤 사람을 뽑으며 어떤 정책을 가지고 있는지를.. 2022. 3. 20. Kafka의 정확히 한 번 전달(exactly-once delivery) 분산 시스템 환경에서는 특히 EDA(Event-Driven Architecture)를 갖는 시스템 환경이라면 Message Broker를 사이에 두고 각 서비스가 메세지를 주고 받을 것이다. 이러한 아키텍처는 결합도를 낮추는 측면에서 엔지니어링에 장점을 갖지만 그와 동시에 여러가지 풀기 힘든 숙제들이 생기게된다. 분산 시스템에서는 오직 2가지 문제 밖에 없다. 2. 정확히 한 번 전달 1. 보장된 메세지 순서 2. 정확히 한 번 전달 이 글에서 말하고 싶은 내용은 Exactly-once delivery, 즉 정확히 한 번 전달이다. 분산 시스템 환경에서는 정확히 한 번 전달은 불가능하다라는 주장의 글이 있다. https://bravenewgeek.com/you-cannot-have-exactly-once.. 2022. 3. 19. 이전 1 ··· 12 13 14 15 16 17 18 ··· 27 다음