Mockito Internals

Próbuję zrozumieć, jak funkcjonują wewnętrzne elementy Mockito. Do tej pory kod był dla mnie trudny do zrozumienia i szukam badania na wysokim poziomie na temat podstawowych działań Mockito.

Mockito @ GrepCode

Napisałem przykładowy kod, aby pokazać moje obecne zrozumienie:

class C {
    String s;
    public void getS() { return s; }
    // ...
}

C cm = mock( C.class);
when( cm.method() ).thenReturn( "string value");

O ile wiem, metoda „mock” widzi tylko wartość zwracaną przez cm.getS (). Skąd może wiedzieć, jaka jest nazwa metody (aby ją odgadnąć)? Ponadto, jak może znać argumenty przekazane do metody?

Metoda API mockito wywołuje metodę wewnętrznego obiektu:

// org.mockito.Mockito
public static <T> OngoingStubbing<T> when(T methodCall) {
    return MOCKITO_CORE.when(methodCall);
}

Podążyłem za wywołaniami metod w kilku różnych abstrakcjach, klasach i obiektach, ale kod jest tak oddzielony, że trudno go zrozumieć w ten sposób.

//  org.mockito.internal.MockitoCore
public <T> OngoingStubbing<T> when(T methodCall) {
    mockingProgress.stubbingStarted();
    return (OngoingStubbing) stub();
}

Jeśli więc ktoś rozumie wewnętrzne elementy lub ma link do postu na blogu lub blogu, proszę się podzielić :)

questionAnswers(1)

yourAnswerToTheQuestion