0

je veux tester mon projet de printemps. J'ai besoin de se moquer d'un client feignant dans une classe de test, mais une implémentation normale serait automatisée au lieu d'une implémentation simulée. voici le top de mes codes. aide de plz.mise en œuvre simulée pour feindre client ne serait pas 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; 
} 

}

ici est ma classe de test:

@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(); 
} 

Répondre

0

Annoter RegistrationControllerTest avec @ActiveProfiles("test").

0
  1. Je retiré @EnableFeignClients de Application.java
  2. Ajouter une classe de configuration vide comme ceci:

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

Maintenant, tout fonctionne très bien