assertj - 在测试 Streams 的供应商时我可以避免强制转换吗
问题描述
使用 AssertJ 时,我可以在测试 Streams 的供应商时避免强制转换吗?
我尝试查看未解决的问题,大多数指向https://github.com/joel-costigliola/assertj-core/issues/683,但我认为这不是直接匹配。
Supplier<Stream<String>> supplier =
() -> Stream.of("String1", "String2");
assertThat(supplier).isNotNull()
.extracting(Supplier::get)
.isInstanceOf(Stream.class)
.satisfies((stream) ->
assertThat((Stream)stream)
.contains("String1", "String2"));
测试有效,但我想尽可能避免流式传输。谢谢。
解决方案
我同意 tkruse 的评论!
我只是想在 AssertJ Core 下一个版本(3.13.0)中添加它,您将能够用于asInstanceOf
转换被测对象并访问特定于类型的断言,请参阅https://github.com/joel-costigliola/assertj-核心/拉/1498
Object value = 0;
assertThat(values).asInstanceOf(INTEGER).isZero();
在你的情况下,我相信你可以写:
assertThat(supplier).isNotNull()
.extracting(Supplier::get)
.asInstanceOf(STREAM)
.satisfies(stream -> assertThat(stream).contains("String1",
"String2"));
推荐阅读
- java - ItemProcessor 的 SpringBatch 瓶颈
- swift4 - 如何在 iOS 中实现自定义相机预览?
- java - 无法使用 LiveData 和 Room 更新 UI
- kotlin - 将 Java 转换为 Kotlin 后出现“赋值不是表达式错误”
- python - 更改列表python的字体
- android - 如何在 Graph 3.0 API android 中获取 Facebook 帐户的性别和年龄范围
- python - 比较列表值并将新值存储在单独的列表中
- arrays - 复杂对象的 json 数组在发布时始终为空
- c - 下面的代码段是做什么的?
- php - 如何通过单击使用输入提交值和 GET(将提交值链接到另一个页面)?