相关疑难解决方法(0)

WebFlux WebTestClient 和 Kotlin 的类型干扰问题

我正在使用 Spring Webflux 和 Kotlin 为新应用程序构建原型。Spring Webflux 包含一个用于单元测试的 WebTestClient。根据文档,我应该能够像这样测试 REST 调用的结果:

@Test
fun getVersion_SingleResult_ContentTypeJson_StatusCodeOk_ContentEqualsVersion() {
    //given
    var version = Version("Test", "1.0")
    val handler = ApiHandler(version!!)
    val client = WebTestClient.bindToRouterFunction(ApiRoutes(handler).apiRouter()).build()

    //expect
    val response = client.get().uri("/api/version/").exchange()
    response.expectStatus().isOk
    response.expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8)
    response.expectBody(Version::class.java).isEqualTo(version)
}
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了一些类型的干扰问题。问题在于“expectBody”和“isEqualTo”的组合。

我得到的错误是:

Kotlin:类型推断失败:没有足够的信息来推断 fun isEqualTo(p0: Version!): T! 中的参数 T!请明确指定。

使用的方法具有以下签名:

<B> WebTestClient.BodySpec<B, ?> expectBody(Class<B> var1);

public interface BodySpec<B, S extends WebTestClient.BodySpec<B, S>> {
    <T extends S> T isEqualTo(B var1);
}
Run Code Online (Sandbox Code Playgroud)

可悲的是,我遇到了我对泛型知识的限制以及 Kotlin 和 Java 之间的差异,这意味着我不确定我应该如何指定它。

编辑:就像我在下面说的,当我使用isEqualTo<Nothing>(version). 但是,当 isEqualTo 结束而没有失败时,这会导致 NullPointerException。这似乎是因为 …

type-inference kotlin spring-webflux

5
推荐指数
1
解决办法
1553
查看次数

标签 统计

kotlin ×1

spring-webflux ×1

type-inference ×1