代码之家  ›  专栏  ›  技术社区  ›  Kane

使用spring webflux时,WebTestClient不工作

  •  0
  • Kane  · 技术社区  · 8 年前

    我通过Spring boot 2.0.0.M3使用Spring webflux。下面是我项目的依赖项,

    dependencies {
    compile 'org.springframework.boot:spring-boot-starter-actuator',
            'org.springframework.cloud:spring-cloud-starter-config',
            'org.springframework.cloud:spring-cloud-sleuth-stream',
            'org.springframework.cloud:spring-cloud-starter-sleuth',
            'org.springframework.cloud:spring-cloud-starter-stream-rabbit',
            'org.springframework.boot:spring-boot-starter-data-mongodb-reactive',
            'org.springframework.boot:spring-boot-starter-data-redis-reactive',
            'org.springframework.boot:spring-boot-starter-integration',
            "org.springframework.integration:spring-integration-amqp",
            "org.springframework.integration:spring-integration-mongodb",
            'org.springframework.retry:spring-retry',
            'org.springframework.boot:spring-boot-starter-webflux',
            'org.springframework.boot:spring-boot-starter-reactor-netty',
            'com.fasterxml.jackson.datatype:jackson-datatype-joda',
            'joda-time:joda-time:2.9.9',
            'org.javamoney:moneta:1.0',
            'com.squareup.okhttp3:okhttp:3.8.1',
            'org.apache.commons:commons-lang3:3.5'
    compileOnly 'org.projectlombok:lombok:1.16.18'
    testCompile 'org.springframework.boot:spring-boot-starter-test',
            'io.projectreactor:reactor-test',
            'org.apache.qpid:qpid-broker:6.1.2',
            'de.flapdoodle.embed:de.flapdoodle.embed.mongo'
    }
    

    该应用程序通过运行良好 ./gradlew bootRun 或者直接运行主应用程序。

    我想知道为什么 WebTestClient

    下面是我的测试用例的代码片段,

    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class NoteHandlerTest {
    
    @Autowired
    private WebTestClient webClient;
    
    @Test
    public void testNoteNotFound() throws Exception {
        this.webClient.get().uri("/note/request/{id}", "nosuchid").accept(MediaType.APPLICATION_JSON_UTF8)
                .exchange().expectStatus().isNotFound();
    }
    }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Kane    8 年前

    org.apache.qpid:qpid-broker:6.1.2 javax.serlvet-api:3.1 破坏tomcat的启动。

    排除以下无用模块,使tomcat再次启动,

    configurations {
        all*.exclude module: 'qpid-broker-plugins-management-http'
        all*.exclude module: 'qpid-broker-plugins-websocket'
    }