lepffm / issuance

Blogging with Github Issues.
https://github.com/lepffm/issuance/issues
MIT License
1 stars 0 forks source link

[try] kotlin mockk 을 java에서 써보기 #222

Open lepffm opened 3 weeks ago

lepffm commented 3 weeks ago

요약

kotlin 에서 인기를 얻고 있는 mockk test libary 를 java 에서 써보려고 시도한 내용.

WHY

HOW

경과

example

@ExtendWith(MockKExtension.class)
class MockkForJavaPocTest extends MockKForJava {
  @InjectMockk 
  private Subject subject;
  @Mockk(relaxed = true)
  private SubComponent sub;
  @Test  
  void test() {
    givenK(() -> sub.call("test"), "mock-return");

    String result = subject.call("hello");

    assertThat(result).isEqualTo("");
    verifyK(() -> sub.call("test"));
  }  

  static class Subject {
    private SubComponent sub;
    public Subject(SubComponent sub){ this.sub = sub; }
    public String call(String arg) { return arg + sub.subCall(arg); }
  }
  static class SubComponent {
    String subCall(String arg){ return arg; }
  }
}

implementation

open class MockKForJava {
  fun givenK(fn: ()-> Any, ret: Any) {
    every { fn() } returns ret
  }
  fun givenK(fn: ()-> Void) {
    justRun { fn() }
  }
  fun veirifyK(fn: ()-> Any) {
    verify{ fn() }
  }
}