0

ich möchte mein frühlingsprojekt testen. Ich muss einen Schein-Client in einer Testklasse vortäuschen, aber die normale Implementierung würde automatisch anstelle der Scheinimplementierung ausgeführt werden. hier ist oben meine Codes. PLZ Hilfe.mock-implementation für feign client wäre nicht autowire

@Profile("test") 
@Primary 
@Component 
public class PushDevClientMock implements PushDevClient { 

//apiKey is needed for comminucating with GCM 
private static final String apiKey = "AIzaSyC7nH1yMgfGnEHbOHCgAeOrspMReaj0hCg"; 
@Override 
public ResponseEntity<PushInstanceResponse> getPushInstance(@PathVariable("instanceId") String instanceId) { 

    ResponseEntity<PushInstanceResponse> response; 
    if (instanceId == null) { 
     response = new ResponseEntity<PushInstanceResponse>(HttpStatus.BAD_REQUEST); 
    } 
    else { 
     PushInstanceResponse body = new PushInstanceResponse(); 
     body.setApiKey(apiKey); 
     response = new ResponseEntity<PushInstanceResponse>(body,HttpStatus.ACCEPTED); 
    } 

    return response; 
} 

}

hier ist meine Testklasse:

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = Application.class) 
@WebIntegrationTest({"server.port:0", "spring.profiles.active:test"}) 
public class RegistrationControllerTest { 

@Autowired 
WebApplicationContext wac; 

@Autowired 
TokenRepository tokenRepository; 

private static MockMvc mockMvc; 
private static ObjectMapper mapper = new ObjectMapper(); 
// token and sender id are required for communicating with google 
private static String senderId = "553921561995"; 
private static String token = 
"ecdNq6_jeTM:APA91bEgWsJeIS5cXFwWrj_83EKeLWRFf1" + 
     "-  lNQGXA1uWdzrfHLpd7fAY7ur6Pplc4TQuKmEDiSUhUBhDdQLwG2a_fxdgoGbDrKNLjPm2E7JOMJFjk65jtFGHrjJ39NkgABtfn6MDVUCQ"; 

@Before 
public void setup() { 
    this.mockMvc = MockMvcBuilders.webAppContextSetup(wac).apply(springSecurity()).build(); 
    tokenRepository.deleteAll(); 
} 

Antwort

0

Beschriften RegistrationControllerTest mit @ActiveProfiles("test").

0
  1. I entfernt @EnableFeignClients von Application.java
  2. empty Konfigurationsklasse wie folgt aus:

    @Configuration 
    @Profile("!test") 
    @EnableFeignClients(basePackages = "ir.pegahtech.backtory.push_api") //this is my project root 
    public class FeignClientConfiguration { 
    } 
    

Jetzt funktioniert alles einwandfrei