下面是一个例子:
assertThat(commentById.getId()).isNotNull();
assertThat(commentById.getContent()).isNotBlank();
assertThat(commentById.getAuthor()).isNotNull();
assertThat(commentById.getAuthor().getUsername()).isNotBlank();
assertThat(commentById.getAuthor().getAvatar()).isNotBlank();
assertThat(commentById.getAuthor().getId()).isNotNull();
Run Code Online (Sandbox Code Playgroud)
反正有没有把它链接成一个assertThat语句
抱歉,问题不清楚。我的意思是,是否有一些流畅的方法调用可以将多个 assertThat 语句链接在一起。这是我能想到的一个例子:
assertThat(commentById)
.isNotNull()
.and(Comment::getID).isNotNull()
.and(Comment::getContent).isNotBlank()
.and(Comment::getAuthor).is(author->{
author.isNotNull()
.and(User::getID).isNotNull()
.and(User::getAvatar).isNotBlank()
.and(User::getUsername).isNotBlank()
});
Run Code Online (Sandbox Code Playgroud)
Tom*_*ský 18
您可以使用satisfies方法:
assertThat(commentById.getId()).isNotNull();
assertThat(commentById.getContent()).isNotBlank();
assertThat(commentById.getAuthor()).isNotNull().satisfies(author -> {
assertThat(author.getUsername()).isNotBlank();
assertThat(author.getAvatar()).isNotBlank();
assertThat(author.getId()).isNotNull();
});
Run Code Online (Sandbox Code Playgroud)
这有助于在测试嵌套结构时消除代码的重复部分。
如果您希望commentById通过“one-liner”测试对象本身,理论上可以对其应用相同的方法(assertThat(commentById).satisfies(c -> {assertThat(c.getId()).isNotNull(); ...})),但是我在这里声明只是为了从字面上回答您的问题,实际上我没有看到任何好处这样的表达。
| 归档时间: |
|
| 查看次数: |
1156 次 |
| 最近记录: |