반응형

생성자 Mocking 하는 방법

1. 먼저 Socket s = new Socket() 구문에 대해서 Socket m = makeSocket() 형태로 바꾼다.

2. make함수는 Socket() 객체를 새로 반환하는 형태를 가진다

3. 그리고 spy함수를 통하여 아래와 같이 한다.

 

Socket mMockSocket = mock(Socket.class)

Server mSpyServer = spy(mServer);

when(mSpyServer.makeSocket).thenReturn(mMockSocket)

.
.
class ServerTest() {
  public void Test() {
    Server mServer = new Server()
    Socket mMockSocket = mock(Socket.class);
    Server mSpyServer = spy(mServer);
    when(mSpyServer.makeSocket).thenReturn(mMockSocket);
  }
  
  Socket makeSocket() {
  	return new Socket();
  }
}
.
.
.

이렇게 만들면 Server내에서 생성하는 socket들을 mocking하여 진행할 수 있다.

 

+ 추가적으로

아래와 같이 한다면 mocking된 socket함수의 메서드들을 제어할 수 있다.

 

ex)  when(mMockSocket.send(any()).thenReturn(true);

 

 

참고

stackoverflow.com/questions/13364406/mock-a-constructor-with-parameter

stackoverflow.com/questions/11214136/unit-testing-with-mockito-for-constructors/11214995

 

 

 

 

도움이 되셨다면 좋아요 한번만 눌러주세요!

반응형

'Java > Test Code' 카테고리의 다른 글

[TDD] Stub한다의 의미.  (0) 2021.01.06
TDD  (0) 2021.01.06
a  (0) 2020.12.31
[Junit] Junit 용어 정리  (0) 2020.12.30
Mock/Stub/Spy의 차이점  (0) 2020.12.23