Mock-Objekt den Aufruf der Methode mit Spring Boot und Mockito

Ich versuche zu schreiben, ein test für diese Java-SpringBoot s-Klasse:

https://github.com/callistaenterprise/blog-microservices/blob/master/microservices/composite/product-composite-service/src/main/java/se/callista/microservices/composite/product/service/ProductCompositeIntegration.java

Speziell, ich bin versucht, "mock" - diesem Aufruf der Methode:

URI uri = util.getServiceUrl("product");

Dachte ich, ich sollte "mock" - die ServiceUtils Objekt, um dies zu tun. Ich habe versucht, dies mit der @Mock und @InjectMocks Anmerkungen:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ProductCompositeServiceApplication.class)
public class ProductCompositeIntegrationTest {

    @InjectMocks
    @Autowired
    private ProductCompositeIntegration productIntegration;

    @Autowired
    private RestTemplate restTemplate;

    @Mock
    private ServiceUtils util;

    private MockRestServiceServer mockServer;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mockServer = MockRestServiceServer.createServer(restTemplate);
    }

    @Test
    public void myTest() {
        Mockito.when(util.getServiceUrl("product")).thenReturn(URI.create("http://localhost:8080/test"));
        ResponseEntity<Iterable<Product>> products = productIntegration.getAllProducts();
    }
}

Aber so ist es noch immer fordert der ursprünglichen ServiceUtils Objekt, und nicht den "verspottet" ein. Habe auch versucht ohne die @Autowired Anmerkung am ProductCompositeIntegration, aber diese Ergebnisse in einem NullPointerException.

Was mache ich falsch?


Meine main-Klasse sieht wie folgt aus:

@SpringBootApplication
@EnableCircuitBreaker
@EnableDiscoveryClient
public class ProductCompositeServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProductCompositeServiceApplication.class, args);
    }
}

Den ServiceUtils Objekt, dass ich versucht bin, zu verspotten, der angegeben ist, in eine Klasse, versehen mit Feder @Component Anmerkung zu injizieren und es in den anderen Klassen mit @Autowired.

InformationsquelleAutor Kaj | 2015-09-28
Schreibe einen Kommentar