繁体   English   中英

Spring WebFlux和Controller测试失败

[英]Failing test with Spring WebFlux and Controller

我正在尝试使用Spring Webflux为Spring控制器编写单元测试。 以下是控制器:

@Controller
public class MyController {

    private Service service;

    public MyController (Service service) {
        this.service=service;
    }

    @GetMapping({"", "/", "/index"})
    public String createChain(Model model) {
        model.addAttribute("blockchain", service.getString());

        return "index";
    }

}

这是基础服务接口:

public interface Service{

    Mono<String> getString();

}

这是测试类:

@RunWith(SpringRunner.class)
@WebFluxTest(MyController.class)
public class MyControllerTest {

    @Autowired
    private WebTestClient webTestClient;

    @MockBean
    private Service service;

    @Test
    public void getAString() {

        BDDMockito.given(service.getString()).willReturn(Mono.just("A string."));

        this.webTestClient.get().uri("/").exchange()
                .expectStatus().isOk();

    }
}

如您所见,我只是试图从反应式服务中检索一个字符串,然后将该字符串放入html模板中(我使用Thymeleaf作为模板引擎)。 但是,我不断收到以下异常:

java.lang.IllegalStateException:无法解析名称为“ index”的视图。 在org.springframework.web.reactive.result.view.ViewResolutionResultHandler.lambda $ resolveViews $ 3(ViewResolutionResultHandler.java:276)〜[spring-webflux-5.1.4.RELEASE.jar:5.1.4.RELEASE]在react.core .publisher.FluxMapFuseable $ MapFuseableSubscriber.onNext(FluxMapFuseable.java:107)[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] at反应器.core.publisher.Operators $ MonoSubscriber.complete(Operators.java :1505)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoCollectList $ MonoBufferAllSubscriber.onComplete(MonoCollectList.java:118)〜[reactor-core-3.2。 5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.FluxConcatMap $ ConcatMapImmediate.drain(FluxConcatMap.java:360)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE ]在react..core.publisher.FluxConcatMap $ ConcatMapImmediate.onComplete(FluxConcatMap.java:269)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在react..core.publisher.Operators.complete (Operators.java:131)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE ] at react.core.publisher.FluxIterable.subscribe(FluxIterable.java:122)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] at react.core.publisher.FluxIterable.subscribe(FluxIterable .java:63)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于react..core.publisher.FluxConcatMap.subscribe(FluxConcatMap.java:121)〜[reactor-core-3.2。 5.Release.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoCollectList.subscribe(MonoCollectList.java:59)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] react..core.publisher.MonoMapFuseable.subscribe(MonoMapFuseable.java:59)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] at Reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java :60)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在react..core.publisher.MonoFlatMap $ FlatMapMain.onNext(MonoFlatMap.java:150)〜[reactor-core-3.2。 5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.FluxSwitchIfEmpty $ SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:67)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RE 租约],位于reactor.core.publisher.Operators $。ScalarSubscription.request(Operators.java:2070)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.Operators $ MultiSubscriptionSubscriber.set(Operators.java:1878)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.Operators $ MultiSubscriptionSubscriber.onSubscribe(Operators.java:1752)〜 [reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)〜[reactor-core-3.2.5.RELEASE.jar: 3.2.5.RELEASE]位于reactor.core.publisher.MonoSwitchIfEmpty.subscribe(MonoSwitchIfEmpty.java:44)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher。 MonoFlatMap.subscribe(MonoFlatMap.java:60)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在react..core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)〜[reactor -core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoFlatMap $ FlatMapMain.onNext(MonoFlatMap.java:150)〜[reactor-core -3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.Operators $ MonoSubscriber.complete(Operators.java:1505)〜[reactor-core-3.2.5.RELEASE.jar:3.2。 5.RELEASE]位于reactor.core.publisher.MonoFlatMap $ FlatMapInner.onNext(MonoFlatMap.java:241)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher。 FluxOnErrorResume $ ResumeSubscriber.onNext(FluxOnErrorResume.java:73)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] at Reactor.core.publisher.FluxPeekFuseable $ PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:204:204) )〜Reactor.core.publisher.FluxPeekFuseable $ PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:204)的[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]〜[reactor-core-3.2.5。 RELEASE.jar:3.2.5.RELEASE],位于atreactor.core.publisher.Operators $ MonoSubscriber.complete(Operators.java:1505)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] react.core.publisher.MonoIgnoreThen $ ThenAcceptInner.onNext(MonoIgnoreThen.java:296)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在r eactor.core.publisher.Operators $ MonoSubscriber.complete(Operators.java:1505)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] at react.core.publisher.MonoFlatMap $ FlatMapMain.onNext (MonoFlatMap.java:144)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在reactor.core.publisher.Operators $ MonoSubscriber.complete(Operators.java:1505)〜[reactor- core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoZip $ ZipCoordinator.signal(MonoZip.java:247)〜[reactor-core-3.2.5.RELEASE.jar:3.2 .5.RELEASE]位于reactor.core.publisher.MonoZip $ ZipInner.onNext(MonoZip.java:329)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher .FluxPeekFuseable $ PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:204)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] at react.core.publisher.Operators $ ScalarSubscription.request(Operators.java: 2070)在reactor.core.publisher.FluxPeekFuseable $ PeekFuseableSubscriber.request(FluxPeekFuseable.java:138)的[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] 〜.reactor.core.publisher.MonoZip $ ZipInner.onSubscribe(MonoZip.java:318)的[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]〜[reactor-core-3.2.5.RELEASE .jar:3.2.5.RELEASE]在Reactor.core.publisher.FluxPeekFuseable $ PeekFuseableSubscriber.onSubscribe(FluxPeekFuseable.java:172)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] .core.publisher.MonoJust.subscribe(MonoJust.java:54)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoPeekFuseable.subscribe(MonoPeekFuseable.java: 74)〜reactor.core.publisher.Mono.subscribe(Mono.java:3695)的[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]〜[reactor-core-3.2.5.RELEASE .jar:3.2.5.RELEASE]放在react..core.publisher.MonoZip.subscribe(MonoZip.java:128)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] .publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) 〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELE ASE]位于reactor.core.publisher.MonoIgnoreThen $ ThenIgnoreMain.drain(MonoIgnoreThen.java:153)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoIgnoreThen。 subscription(MonoIgnoreThen.java:56)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoPeekFuseable.subscribe(MonoPeekFuseable.java:74)〜[reactor-core -3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoPeekFuseable.subscribe(MonoPeekFuseable.java:74)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5。 RELEASE]位于reactor.core.publisher.MonoOnErrorResume.java(44)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoFlatMap $ FlatMapMain。 onNext(MonoFlatMap.java:150)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] at Reactor.core.publisher.FluxSwitchIfEmpty $ SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:67)〜[反应器-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoNext $ NextSubscriber.onNext(MonoNext.java:76)〜[ react-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.FluxConcatMap $ ConcatMapImmediate.innerNext(FluxConcatMap.java:275)〜[reactor-core-3.2.5.RELEASE.jar :3.2.5.RELEASE]位于reactor.core.publisher.FluxConcatMap $ ConcatMapInner.onNext(FluxConcatMap.java:849)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] at Reactor.core .publisher.FluxMapFuseable $ MapFuseableSubscriber.onNext(FluxMapFuseable.java:121)[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.Operators $ ScalarSubscription.request(Operators.java) :2070)在reactor.core.publisher.FluxMapFuseable $ MapFuseableSubscriber.request(FluxMapFuseable.java:162)处的[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] [reactor-core-3.2.5 .RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.Operators $ MultiSubscriptionSubscriber.set(Operators.java:1878)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在react.core.publisher.Operators $ MultiSubscriptionSubscriber.onSubscribe(Operators.java:1752)〜[reactor-core-3.2.5.REL EASE.jar:3.2.5.RELEASE],位于Reactor的Reactor.core.publisher.FluxMapFuseable $ MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90)[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] .core.publisher.MonoJust.subscribe(MonoJust.java:54)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于react..core.publisher.MonoMapFuseable.subscribe(MonoMapFuseable.java: 59)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在react..core.publisher.Mono.subscribe(Mono.java:3695)〜[reactor-core-3.2.5.RELEASE .jar:3.2.5.RELEASE]在Reactor.core.publisher.FluxConcatMap $ ConcatMapImmediate.drain(FluxConcatMap.java:442)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] .core.publisher.FluxConcatMap $ ConcatMapImmediate.onSubscribe(FluxConcatMap.java:212)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于react..core.publisher.FluxIterable.subscribe(FluxIterable。 java:139)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在react..core.publisher.FluxIterable.subscribe(FluxIterable.java:63)〜[reactor-core-3 .2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.FluxConcatMap.subscribe(FluxConcatMap.java:121)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在react..core.publisher.MonoNext.subscribe(MonoNext.java:40)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在react..core.publisher.MonoSwitchIfEmpty.subscribe(MonoSwitchIfEmpty。 java:44)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在react..core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)〜[reactor-core-3.2.5 .RELEASE.jar:3.2.5.RELEASE]在Reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:60)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]在Reactor .core.publisher.MonoDefer.subscribe(MonoDefer.java:52)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java: 52)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] at反应器.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)〜[reactor-core-3.2.5.RELEASE .jar:3.2.5.RELEASE]位于react.core.p ublisher.MonoPeekTerminal.subscribe(MonoPeekTerminal.java:61)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] at Reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)〜 [reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.Mono.subscribe(Mono.java:3695)〜[reactor-core-3.2.5.RELEASE.jar: 3.2.5.RELEASE]位于reactor.core.publisher.MonoIgnoreThen $ ThenIgnoreMain.drain(MonoIgnoreThen.java:172)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core。 Publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:56)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.Mono.subscribe(Mono.java:3695)〜 [reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.Mono.subscribeWith(Mono.java:3801)〜[reactor-core-3.2.5.RELEASE.jar: 3.2.5.RELEASE]位于reactor.core.publisher.Mono.subscribe(Mono.java:3689)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher。 Mono.subscribe(Mono.java:3656)〜[reactor-core-3.2.5.R elease.core.publisher.Mono.subscribe(Mono.java:3628)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于org.elease.jar:3.2.5.RELEASE]。 springorgwork.test.web.reactive.server.HttpHandlerConnector.lambda $ connect $ 1(HttpHandlerConnector.java:89)〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE]在org.springframework.mock。 http.client.reactive.MockClientHttpRequest.lambda $ null $ 2(MockClientHttpRequest.java:121)〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE] at Reactor.core.publisher.MonoDefer.subscribe( MonoDefer.java:44)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] at react.core.publisher.Mono.subscribe(Mono.java:3695)〜[reactor-core-3.2 .5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.FluxConcatIterable $ ConcatIterableSubscriber.onComplete(FluxConcatIterable.java:146)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5。 RELEASE]位于reactor.core.publisher.FluxConcatIterable.subscribe(FluxConcatIterable.java:60)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.MonoIgnor eElements.subscribe(MonoIgnoreElements.java:37)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.Mono.subscribe(Mono.java:3695)〜[reactor -core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.Mono.subscribeWith(Mono.java:3801)〜[reactor-core-3.2.5.RELEASE.jar:3.2。 5.Release]位于reactor.core.publisher.Mono.subscribe(Mono.java:3689)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]位于reactor.core.publisher.Mono。在reactor.core.publisher.Mono.subscribe(Mono.java:3628)上订阅(Mono.java:3656)〜[reactor-core-3.2.5.RELEASE.jar:3.2.5.RELEASE]〜[reactor-core -3.2.5.RELEASE.jar:3.2.5.RELEASE]位于org.springframework.test.web.reactive.server.HttpHandlerConnector.connect(HttpHandlerConnector.java:100)〜[spring-test-5.1.4.RELEASE。 jar:5.1.4.RELEASE]位于org.springframework.test.web.reactive.server.WiretapConnector.connect(WiretapConnector.java:71)〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE ]在org.springframework.web.reactive.function.client.ExchangeFunctions $ Defa ultExchangeFunction.exchange(ExchangeFunctions.java:103)〜[spring-webflux-5.1.4.RELEASE.jar:5.1.4.RELEASE]在org.springframework.web.reactive.function.client.DefaultWebClient $ DefaultRequestBodyUriSpec.exchange(DefaultWebClient .java:319)〜[spring-webflux-5.1.4.RELEASE.jar:5.1.4.RELEASE] at org.springframework.test.web.reactive.server.DefaultWebTestClient $ DefaultRequestBodyUriSpec.exchange(DefaultWebTestClient.java:283) 〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE]在com.lorescianatico.driftcoin.controller.BlockChainControllerTest.createChain(BlockChainControllerTest.java:31)〜在星期日进行[test-classes /:na] .reflect.NativeMethodAccessorImpl.invoke0(本机方法)〜[na:1.8.0_201]在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜[na:1.8.0_201]在sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:43)〜[na:1.8.0_201]在java.lang.reflect.Method.invoke(Method.java:498)〜[na:1.8.0_201]在org.junit.runners.model.FrameworkMethod $ 1 .ru nReflectiveCall(FrameworkMethod.java:50)〜[junit-4.12.jar:4.12] at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)〜[junit-4.12.jar:4.12] at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)〜[junit-4.12.jar:4.12] at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)〜 [junit-4.12.jar:4.12]在org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)〜[spring-test-5.1.4.RELEASE.jar:5.1.4。 RELEASE],位于org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE],位于org.springframework。 test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE]在org.springframework.test.context.junit4.statements .RunAfterTestMe thodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE]在org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java) :84)〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE],位于org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)〜[junit-4.12.jar:4.12]在org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE]在org.springframework.test.context处。 junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE]在org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:290) 〜[junit-4.12.jar:4.12] at org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:71)〜[junit-4.12.jar:4.12] at org.junit.runners.ParentRunner.runChildren(ParentRunner .java:288)〜[junit-4.12.jar:4.12] at org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:58)〜[junit-4.12 .jar:4.12] at org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268)〜[junit-4.12.jar:4.12] at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate( RunBeforeTestClassCallbacks.java:61)〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE]在org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)〜 [spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE]在org.junit.runners.ParentRunner.run(ParentRunner.java:363)〜[junit-4.12.jar:4.12]在org.springframework .test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)〜[spring-test-5.1.4.RELEASE.jar:5.1.4.RELEASE]

我不明白怎么了 名为index.html的模板位于src/main/resources/templates/index.html

谢谢您的支持!

WebFluxTest :使用此批注将禁用完全自动配置,而仅应用与WebFlux测试相关的配置(即@ Controller,@ ControllerAdvice,@ JsonComponent,Converter / GenericConverter和WebFluxConfigurer Bean,而不是@ Component,@ Service或@Repository Bean) 。

如果要加载完整的应用程序配置并使用WebTestClient,则应考虑将@SpringBootTest与@AutoConfigureWebTestClient结合使用,而不要使用此注释。

WebFluxTest文档


@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureWebTestClient
public class MyControllerTest {

    @Autowired
    private WebTestClient webTestClient;

    @MockBean
    private Service service;

    @Test
    public void getAString() {

        BDDMockito.given(service.getString()).willReturn(Mono.just("A string."));

        this.webTestClient.get().uri("/").exchange()
                .expectStatus().isOk();

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM