저는 .NET 사용자이고 주로 C#을 코딩합니다."정적 반사"는 Java에서 어떻게 작동합니까? (예 : mockito 또는 easymock)
C# 3.0부터 람다 식과 표현식 트리를 활용하여 static reflection을 사용할 수 있습니다. 난 자바 세계에서 Mockito 샘플 (또는 EasyMock에 것들)를 볼 때, 이제
string methodName = GetMethodName(o => o.DoSomething());
Console.WriteLine(methodName); // displays "DoSomething"
: 예를 들어, 매개 변수에 전달 된 메소드의 이름을 반환하려면 다음 코드에서 GetMethodName
을 구현할 수 참조 :
LinkedList mockedList = mock(LinkedList.class);
when(mockedList.get(0)).thenReturn("first");
어떻게 작동합니까?
when
방법은 어떻게 작동합니까? 어떻게 mockedList.get(0)
을 으로 해석합니까? 0으로 시작하는 get 메소드를 호출하는 것은 값이 아닌 매개 변수로 전달됩니까?
프록시가 작동하는 인터페이스. 자신의 코드 생성에 대한 실제 조롱 프레임 워크. –
.NET에서 강력한 형식의 조롱 프레임 워크는 표현 트리 (cf. Moq & Rhino mock)와 실제로 동적 프록시를 사용합니다. 하지만 여기서도 (프록시를 사용하는 경우에도) 어떻게 모의 설치를 안전하게 할 수 있는지는 여전히 내게 불분명하다. "(mockedList.get (0) + mockedList.get (2)). then return (42)"라고 입력하면 어떻게 될까요? –
Rhino 모의는 표현 트리가 존재하기 오래 전에 존재했습니다. 어떤 경우에는 표현 트리 * now *를 사용할 수 있지만 항상 * 그렇게하지는 않습니다. (여전히 .NET 2.0에서 작동합니다.) 마지막 모의 결과를 지정하기 전에 모의 객체를 다시 호출하면 결과는 모의 객체의 모드에 따라 달라집니다. –