Почему python может переопределять значения, связанные с ключом словаря, который не был вызван?

С 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"));
}

0
задан ratchet600 15 January 2019 в 15:21
поделиться

1 ответ

Проблема была точно такой же, как подчеркивали bruno desthuillers, которая углубилась из-за базового понимания отношений имя-значение в python.

В начале кода все записи словарных реакций объявляются как имена для одного значения - списка под названием видов_lhs, следовательно, когда я изменил один экземпляр, он изменил их все.

0
ответ дан ratchet600 15 January 2019 в 15:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: