С Java 8, Ответ Стива может стать
public void testMyFunction() throws Exception {
Application mock = mock(Application.class);
when(mock.myFunction(anyString())).thenAnswer(
invocation -> {
Object[] args = invocation.getArguments();
return args[0];
});
assertEquals("someString", mock.myFunction("someString"));
assertEquals("anotherString", mock.myFunction("anotherString"));
}
EDIT: Еще короче:
public void testMyFunction() throws Exception {
Application mock = mock(Application.class);
when(mock.myFunction(anyString())).thenAnswer(
invocation -> invocation.getArgument(0));
assertEquals("someString", mock.myFunction("someString"));
assertEquals("anotherString", mock.myFunction("anotherString"));
}
Проблема была точно такой же, как подчеркивали bruno desthuillers, которая углубилась из-за базового понимания отношений имя-значение в python.
В начале кода все записи словарных реакций объявляются как имена для одного значения - списка под названием видов_lhs, следовательно, когда я изменил один экземпляр, он изменил их все.