我想断言
expected
和
actual
彼此平等。如果两者都是可以的
null
或空白(
""
)--即。
无效的
表示空白。
.withComparator(...).isEqualTo(expected)
不起作用,因为
无效的
之前由AspectJ检查:
@Given("^data is \"([^\"]*)\"$")
void theDataIs(String arg) {
assertThat(msg.getData())
.usingComparator(blankOkComperator).isEqualTo(arg);
}
我的比较对象是科特林,但你知道:
object blankOkComperator : Comparator<String> {
override fun compare(o1: String?, o2: String?): Int {
if(StringUtils.isBlank(o1) && StringUtils.isBlank(o2)) return 0
if(StringUtils.isBlank(o1)) return -1
if(StringUtils.isBlank(o2)) return 1
return o1!!.compareTo(o2!!)
}
}
我只通过覆盖AssertJ的实现了检查
Condition<String>
但在我看来,这并不是很有主张性:
@Given("^data is \"([^\"]*)\"$")
void theDataIs(String arg) {
assertThat(msg.getDate())
.is(new EqualToOrBothBlank(arg));
}
同样,助手是科特林,但你知道我的意思:
class EqualToOrBothBlank(val expected: String) : Condition<String?>() {
override fun matches(actual: String?): Boolean {
if(StringUtils.isBlank(actual) && StringUtils.isBlank(expected)) return true;
return StringUtils.equals(actual, expected)
}
}
是否有AspectJ方法来实现检查?