[java] Mockito를 사용하여 특정 메소드에 전달된 인자들로 다른 메소드를 호출했을 때 인자들 중 특정 값이 존재하는지 확인하는 방법은?
// 테스트 대상 객체 생성
SomeClass someClass = Mockito.mock(SomeClass.class);
// 메소드 호출 시 인자들 설정
someClass.someMethod("arg1", "targetValue", "arg3");
// 다른 메소드가 호출될 때 특정 인자가 있는지 확인
Mockito.verify(someClass).anotherMethod(Matchers.contains("targetValue"));
위의 예시에서 someMethod
를 호출할 때 "targetValue"
라는 값이 전달되었는지, 그리고 anotherMethod
가 이 값을 포함하고 있는지를 확인하고자 합니다. 이를 위해 verify
메소드와 contains
매처(matcher)를 사용합니다.
contains
매처는 전달된 인자들 중에 특정 값을 포함하는지를 확인하는 매처입니다. 위의 예시에서는 anotherMethod
가 호출될 때 "targetValue"
를 포함하고 있는지 확인하고 있습니다. 만약 "targetValue"
를 포함하지 않는 경우 예외가 발생하게 됩니다.
이것은 Mockito를 사용하여 특정 인자를 포함하는지 여부를 확인하는 간단한 방법입니다. Mockito에서는 더 다양한 매처를 제공하므로 필요에 따라 적합한 매처를 선택하여 사용할 수 있습니다.
참고자료:
주의사항: 예시 코드에서 SomeClass
는 실제로는 Mock 객체입니다. Mock 객체는 테스트를 위해 가짜 객체를 생성하고 테스트 중에 발생하는 메소드 호출을 확인하기 위해 사용됩니다. 따라서 실제 코드에는 Mock 객체를 사용하지 않고, 실제 인스턴스를 생성하여 사용해야 합니다.