/** * */ package org.minnal.instrument.resource.metadata; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import javax.ws.rs.GET; import javax.ws.rs.Path; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * @author ganeshs * */ public class ResourceMetaDataProviderTest { private ResourceMetaDataProvider provider; @BeforeMethod public void setup() { provider = spy(ResourceMetaDataProvider.instance()); } @Test public void shouldCallBuilderOnlyFirstTime() { ResourceMetaDataBuilder builder = mock(ResourceMetaDataBuilder.class); when(builder.build()).thenReturn(mock(ResourceMetaData.class)); doReturn(builder).when(provider).getResourceMetaDataBuilder(DummyResource.class); provider.getResourceMetaData(DummyResource.class); verify(builder).build(); provider.getResourceMetaData(DummyResource.class); verify(builder, times(1)).build(); } @Path("/dummy") public static class DummyResource { @GET public void getMethod() {} } }