Je cette classe, où je suis en train de se moquer de la création d'objets pour UrlWrapper.classMocking nouvelle() à l'aide Runnable powerMockito
public class WorkerClass {
private final String url;
public WorkerClass(String url) {
this.url = url;
}
void performOperation(Executor executor) throws IOException {
Runnable runnable = new Runnable() {
@Override
public void run() {
UrlWrapper urlWrapper = null;
try {
urlWrapper = new UrlWrapper(url);
HttpURLConnection connection = (HttpURLConnection) urlWrapper.openConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
};
executor.execute(runnable);
}
}
C'est le code de test que j'ai essayé
@RunWith(PowerMockRunner.class)
@PrepareForTest({UrlWrapper.class, WorkerClass.class})
public class TestClass {
@Before
public void init() throws Exception {
UrlWrapper urlWrapper = Mockito.mock(UrlWrapper.class);
PowerMockito.whenNew(UrlWrapper.class)
.withArguments(Mockito.anyString())
.thenReturn(urlWrapper);
}
@Test
public void test() throws IOException {
Executor executor = new Executor() {
@Override
public void execute(Runnable command) {
command.run();
}
};
WorkerClass workerClass = new WorkerClass("");
workerClass.performOperation(executor);
}
}
Mais ce n'est pas moqué. La simulation fonctionne bien sans Runnable.
Que manque-t-il ici?
Question intéressante; mon vote pour ça. Bien que ma réponse vous dise de faire quelque chose de complètement différent. J'espère que vous trouverez la réponse au moins utile, maintenant que vous avez atteint ce niveau ;-) – GhostCat