Soy un chico .NET - y principalmente codigo en C#.¿Cómo funciona la "reflexión estática" en Java? (por ejemplo, en mockito o easymock)
Desde C# 3.0, podemos aprovechar las expresiones lambda y los árboles de expresión para usar static reflection. Por ejemplo, es posible implementar GetMethodName
en el siguiente fragmento de código para devolver el nombre del método que se pasa en el parámetro:
string methodName = GetMethodName(o => o.DoSomething());
Console.WriteLine(methodName); // displays "DoSomething"
Ahora, cuando miro muestras Mockito (o los EasyMock) en el mundo Java, yo ver:
LinkedList mockedList = mock(LinkedList.class);
when(mockedList.get(0)).thenReturn("first");
¿Cómo funciona?
¿Cómo funciona el método when
? ¿Cómo interpreta mockedList.get(0)
como una llamada al método get con 0 pasado como parámetro y no como un valor?
Proxy en trabajos con interfaces. Marcos burlones reales para su propia generación de código. –
En .NET, los marcos burlones fuertemente tipados usan árboles de expresión (véanse los simulacros de Moq y Rhino) y, de hecho, proxies dinámicos. Pero aquí todavía no está claro cómo (incluso con proxies) puede configurar el simulacro de forma segura. ¿Qué ocurre si escribo "cuándo (mockedList.get (0) + mockedList.get (2)). Then luego Return (42)"? –
Rhino Mocks existía mucho antes que los árboles de expresión. Puede usar árboles de expresión * ahora * en algunos casos, pero no * siempre * lo hace. (Todavía funciona en .NET 2.0.) Si realiza otra llamada al simulacro antes de especificar el resultado del último, los resultados dependen del modo del simulacro. –