1

データを反応的に保存するためにCassandraを使用する予定です。これを行うには、私は次のインターフェイスを書いた:Spring Boot: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 Beanが作成されていない理由を知っていますか?

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

詳細をお知らせください。あなたのリポジトリインタフェースは、(拡張インタフェースの2倍を宣言して)奇妙に見えますが、実行中のテストクラスは表示されません。また、なぜspring-data-jpaをミックスに追加するのですか? –

+0

@BrianClozelああ私はコメント行を削除するのを忘れていました。ただそれを更新しました。観察してくれてありがとう。リアクティブではない別のリポジトリを作成するためにspring-data-jpaが含まれています。テストを含めましたが、実際にはすべてのテストが失敗します。なぜなら、そのリポジトリにBeanが見つからないからです。 – Jovanny

+0

@ Jovanny '@ Enable * Repositories'をどこに追加しましたか?例えば。 [この例のように](https://spring.io/blog/2016/11/28/going-reactive-with-spring-data#reactive-configuration)? – Brian

答えて

0

をこのケースをテストするクラス(私は確信していませんが、その部分はあなたの質問にはありません)。

Spring WebFluxアプリケーションをテストするには、@WebFluxTestreference documentationを参照)を使用する必要があります。 WebテストスライスはアプリケーションのWebパーツのみを考慮し、通常は@MockBeanでモックする必要があるため、ContributorStatRepository beanは存在しません。

関連する問題