0
我試圖測試使用PowerMockito諜一些代碼,而我磕碰的方法(getRootTagMap - 見下文)(使用PowerMockito,因爲該方法是私有的)返回,在測試儀構建的價值我正在告訴PowerMockito間諜返回一個值,那麼爲什麼它調用實際的方法?
但是,不是返回值,而是始終調用實際方法,而不是返回構造的值。
不知道我在做什麼錯
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.powermock.api.mockito.PowerMockito.spy;
@RunWith(PowerMockRunner.class)
@PrepareForTest({JsonAppMessageProcessor.class})
public class TestPropStoreAppController {
@Test public void testSaveJsonAppTagChangesToPropStore() throws Exception {
JsonAppMessageProcessor messageProcessorSpy = spy(new JsonAppMessageProcessor());
when(messageProcessorSpy, "getRootTagMap", any(JsonAppTag.class)).thenReturn(constructReturnValue());
// I tried it this way too...
// doReturn(constructReturnValue()).when(messageProcessorSpy, "getRootTagMap", any(JsonAppTag.class));
// the following call calls the real getRootTagMap(JsonAppTag) method instead of returning the stub
messageProcessorSpy.saveChanges(constructParameterForChanges());
}
}
你有沒有發現問題是什麼?我現在有同樣的問題,不知道該怎麼辦.. https://stackoverflow.com/questions/38155092/powermockito-is-calling-the-method-when-i-use-doreturn-when – Ahmad