0
votes

PowerMockito MOCK Méthodes privées à la chaussure de printemps

J'essaie de se moquer d'une méthode privée à l'intérieur de ma classe sous test qui est aussi ci-dessous.

compile group: 'org.powermock', name: 'powermock-module-junit4', version: '2.0.0'
compile group: 'org.powermock', name: 'powermock-api-mockito2', version: '2.0.0'


0 commentaires

3 Réponses :


4
votes

Dans la classe de test, nous appellerons la méthode espion () de org.powermock.api.mockito.powermockito code> en passant la référence à la classe à tester:

@RunWith(PowerMockRunner.class)
@PrepareForTest(MockPrivateMethodExample.class)
public class MockPrivateMethodTest {

  private MockPrivateMethodExample mockPrivateMethodExample;

  // This is the name of the private method which we want to mock
  private static final String METHOD = "iAmPrivate";

  @Test
  public void testPrivateMethod() throws Exception {
    mockPrivateMethodExample = new MockPrivateMethodExample();

    MockPrivateMethodExample spy = PowerMockito.spy(mockPrivateMethodExample);
    PowerMockito.doReturn("Test").when(spy, METHOD);
    String value = spy.getDetails();

    Assert.assertEquals(value, "Mock private method example: Test");
    PowerMockito.verifyPrivate(spy, Mockito.times(1)).invoke(METHOD);
  }
}


2 commentaires

déjà essayé. La méthode est appelée chaque fois que je fais PowerMockito.doreturn ("test"). Quand (espion, méthode); , plus, la méthode ne se moque pas. : - /


@Praveenkamath Pourriez-vous s'il vous plaît marquer la réponse comme utile. Merci.



0
votes

Mockito introduit additionnelswers.delegatesto pour soutenir l'espionnage des proxy de printemps et d'autres choses telles:

Consultez ce problème: https://github.com/mockito/ Mockito / Problèmes / 529 # Issuecomment-239494581

donc au lieu de espion (proxy) Utiliser simule (testsubject.class, Délégatesto (SpringProxy)) .

Toutefois, si les annotations doivent être à lire, vous aurez besoin de Mockito 2 bêta. Parce que Mockito 1.x utilise cglib qui ne copie pas d'annotations sur la sous-classe Mockito. Mockito 2 utilise le Grand Bytebuddy.


1 commentaires

Trouvé le problème. N'a pas ajouté @preparfortest (DevicecheckoutserviceImpl.class) sur la classe de test.



0
votes

problème résolu! Avait oublié d'ajouter @preparfortest (DevicecheckouteServiceImpl.class) sur la classe de test.


0 commentaires