kan*_*ane 4 java junit unit-testing reactor spring-webflux
假设我有一个简单的 webfilter,它只写一个反应器上下文
WebFilter filter = (serverWebExchange, webFilterChain) ->
webFilterChain
.filter(serverWebExchange)
.contextWrite(Context.of("my-key", true));
Run Code Online (Sandbox Code Playgroud)
我想测试会是这样的:
StepVerifier.create(filter.filter(serverWebExchange, webFilterChain)
.expectAccessibleContext()
.hasKey("my-key")
.then()
.verifyComplete();
Run Code Online (Sandbox Code Playgroud)
但我不知道如何模拟webFilterChain
以确保上下文已写入。
Mockito.when(webFilterChain.filter(any()).thenReturn(???)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
小智 5
我有同样的问题,这是我的解决方案
WebFilterChain filterChain = filterExchange -> Mono.empty();
MockServerWebExchange exchange = MockServerWebExchange.from(
MockServerHttpRequest
.get("/your-url")
.header("my-key", "value"));
StepVerifier.create(yourFilter.filter(exchange, filterChain))
.expectAccessibleContext()
.hasKey("my-key")
.then()
.verifyComplete();
Run Code Online (Sandbox Code Playgroud)