2

所以我一直在环顾四周,试图找到解决这个问题的方法,但我遇到了编译器错误或奇怪的期望,或者两者兼而有之。所以我们开始:

this.mockPersonNode.setProperty("fname",new String[] {"John"});
...unrelated code...
//validate traits
final String[] fname = (String[]) groovy.getProperty("firstName");
//This is where my problems lie
assertThat(fname, hasProperty("John"));

所以这段代码编译得很好,但是当我在 Maven 中构建它时,测试失败了,因为:Expected: hasProperty("John"), got:[John]

所以我做了一些查看并检查了人们在这里回答的其他问题,但我得到了编译错误,我显然做错了 assertThat 但应该如何设置 assertThat?

4

2 回答 2

3

使用hasItemInArray匹配器:

assertThat(fname, hasItemInArray("John"));

匹配器hasProperty匹配 Java Bean 属性。

于 2015-07-15T20:41:18.423 回答
1

如果您想断言该数组fname包含该项目John而没有其他内容,您可以使用 IsArrayContainingInOrder匹配器(Matchers.arrayContaining):

assertThat(fname, arrayContaining("John"));

如果您只关心其中至少一项fnameJohn使用 @hzpz 建议的IsArrayContaining匹配器 ( Matchers.hasItemInArray)。

于 2015-07-16T17:49:14.553 回答