package samples.junit4.singleton;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import samples.singleton.SimpleStaticService;
import static org.easymock.EasyMock.expect;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import static org.powermock.api.easymock.PowerMock.*;
@RunWith(PowerMockRunner.class)
@PrepareForTest(SimpleStaticService.class)
public class SimpleStaticServiceTest {
@Test
public void testMockStatic() throws Exception {
mockStatic(SimpleStaticService.class);
final String expected = "Hello altered World";
expect(SimpleStaticService.say("hello")).andReturn("Hello altered World");
replay(SimpleStaticService.class);
final String actual = SimpleStaticService.say("hello");
verify(SimpleStaticService.class);
assertEquals("Expected and actual did not match", expected, actual);
// Singleton still be mocked by now.
try {
SimpleStaticService.say("world");
fail("Should throw AssertionError!");
} catch (final AssertionError e) {
assertEquals("\n Unexpected method call SimpleStaticService.say(\"world\"):", e.getMessage());
}
}
}