wickedev
22
2017-02-01 19:09:41 작성 2017-02-01 19:14:44 수정됨
1
1006

테스트에 대해서 질문이 있습니다.


A 라는 메서드를 호출했을 때 B 라는 메서드가 불리는 것을 예상하는 클래스가 있습니다.
현재 아래와 같이 호출해 봤는데 제가 잘못알고 있는 부분이 있는 있는 것 같습니다.


@Test
public void initView() throws Exception {
LoadingActivity activity = mock(LoadingActivity.class);
activity.onCreate(new Bundle());
verify(activity).initView();
}


Wanted but not invoked:
loadingActivity.initView();

However, there were other interactions with this mock:
loadingActivity.onCreate(Bundle[{}]);


이를 제대로 테스트하는 방법이 있을까요?

0
0
  • 답변 1

  • wickedev
    22
    2017-02-01 19:22:30 작성 2017-02-01 19:23:18 수정됨

    자답입니다.

    public class Utils {
    public static void replaceComponentInActivityController(
    ActivityController<?> activityController, Activity activity)
    throws NoSuchFieldException, IllegalAccessException {
    Field componentField = ComponentController.class.getDeclaredField("component");
    componentField.setAccessible(true);
    componentField.set(activityController, activity);
    }
    }
    @Test
    public void initView() throws Exception {
    LoadingActivity activity = controller.get();
    LoadingActivity spy = spy(activity);
    Utils.replaceComponentInActivityController(controller, spy);
    controller.create();
    verify(spy).initView();
    }


    위와 같이 해결 하였습니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.