java Sping Boot :ReactiveCrudRepository未由任何bean实现

w1jd8yoj  于 2023-06-28  发布在  Java
关注(0)|答案(2)|浏览(162)

我计划使用Cassandra来React式地保存数据。为此,我编写了以下接口:

@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创建合适的bean吗?**

我正在使用Spring boot 2.0.0.M7和这些依赖项:

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')
}
    • 更新**:运行测试:
@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());
}
4xy9mtcn

4xy9mtcn1#

看起来您正在使用一个@WebMvcTest注解的类来测试这种情况(我不确定,您的问题中缺少这一部分)。
要测试Spring WebFlux应用程序,您应该使用@WebFluxTest(请参阅参考文档)。即使你这样做,ContributorStatRepository bean也不会出现,因为web测试切片只考虑应用程序的web部分,你通常需要用@MockBean模拟这个部分。

ubby3x7f

ubby3x7f2#

解决这个问题的步骤:
1.检查接口ClientRepository是否具有@Repository注解

  1. Check @EnableJpaRepositories
    1.使用
    @MockBean私有ContributorStatRepository接口;
    这种情况下,您不打算在具体的类实现中实现接口。
    好好享受

相关问题