1

데이터를 반응 적으로 저장하기 위해 Cassandra를 사용할 계획입니다.스프링 부트 : ReactiveCrudRepository가 Bean에 의해 구현되지 않습니다.

@Repository 
public interface ContributorStatRepository extends ReactiveCrudRepository<ContributorStat, Long> { 
    Flux<ContributorStat> findByAkonId(String akonId); 
} 

예외 위에서 발생합니다 :이를 위해, 나는 다음과 같은 인터페이스를 썼다

com.example.sample.controller.ContributorStatControllerTest > shouldReturnBadRequestWithBlankContributorStat FAILED 
    java.lang.IllegalStateException 
     Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException 
      Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException 
       Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException 

ContributorStatRepository에 대한 appropiate 콩이 생성되지 않는 이유를 알고 있습니까?

dependencies { 
    compile('org.springframework.boot:spring-boot-starter-actuator') 
    compile('org.springframework.boot:spring-boot-starter-data-jpa') 
    compile('javax.xml.bind:jaxb-api:2.3.0') 
    compile('org.springframework.boot:spring-boot-starter-webflux') 
    compile('org.springframework.boot:spring-boot-starter-data-cassandra-reactive') 
    testCompile('org.springframework.boot:spring-boot-starter-test') 
    testCompile('io.projectreactor:reactor-test') 
} 

업데이트 :

나는 봄 부팅 2.0.0.M7 이러한 종속성을 사용하고 실행 테스트 : 당신이 주석 @WebMvcTest을 사용하고있는 것 같다

@Test 
public void shouldReturnBadRequestWithBlankContributorStat() throws Exception { 
    requestPayload = mapper.writeValueAsString(new ContributorStatDTO()); 

    this.mockMvc.perform(post(CONTRIBUTOR_STATS_ROUTE) 
      .contentType(MediaType.APPLICATION_JSON) 
      .accept(MediaType.APPLICATION_JSON) 
      .content(requestPayload)).andDo(print()) 
      .andExpect(status().isBadRequest()); 
} 
+0

자세한 정보를 제공 할 수 있습니까? 저장소 인터페이스가 이상하게 보입니다 (확장 인터페이스를 두 번 선언 하시겠습니까?). 실행중인 테스트 클래스가 표시되지 않습니다. 또한 왜 mix에 spring-data-jpa를 추가할까요? –

+0

@BrianClozel 오 댓글 달린 줄을 삭제하는 것을 잊어 버렸습니다. 방금 업데이트했습니다. 관찰에 감사드립니다. 사후 대응이 아닌 다른 저장소를 생성하기 위해 spring-data-jpa가 포함되었습니다. 나는 테스트를 포함 시켰지만, 실제로는 모든 테스트가 실패했다. 왜냐하면 아무 저장소도 그 저장소를 찾을 수 없기 때문이다. – Jovanny

+0

@ Jovanny 어디에서나'@ Enable * Repositories'를 추가 했습니까? 예 : [이 예]와 같이 (https://spring.io/blog/2016/11/28/going-reactive-with-spring-data#reactive-configuration)? – Brian

답변

0

을 클래스 (이 부분은 귀하의 질문에서 누락되었지만 확실하지 않아요)이 사건을 테스트합니다.

Spring WebFlux 응용 프로그램을 테스트하려면 @WebFluxTest (reference documentation 참조)을 사용해야합니다. 웹 테스트 슬라이스는 응용 프로그램의 웹 파트 만 고려하므로 대개 @MockBean으로 조롱해야하기 때문에 ContributorStatRepository 빈이 존재하지 않습니다.