比较Spock中的空字符串时不满足条件

时间:2014-07-08 20:55:48

标签: groovy spock

我试图检查2个字符串是否相等,但是我正在点击。两个字符串都是空的:

Condition not satisfied:

versionTagPrefix == ""
|                |
""               false
                 2 differences (0% similarity)
                 ("")
                 (--)

我也试过等于:

Condition not satisfied:

"".equals(versionTagPrefix)
   |      |
   false  ""

版本:

compile 'org.codehaus.groovy:groovy-all:2.0.1'
testCompile "org.spockframework:spock-core:0.7-groovy-2.0"

1 个答案:

答案 0 :(得分:3)

据我所知,groovy有很多字符串实现。
当您在输出/错误流中看到消息时,您可能正在查看toString()的值而不是实际的对象内容。

要深入调试,请在对象上使用.properties属性。

例如:

1 org.codehaus.groovy.runtime.GStringImpl

groovy:000> i=10; s1="$i"; "type=${s1.class}\n
                            content=${s1.properties}\n
                            out=${s1.toString()}"
===> type=class org.codehaus.groovy.runtime.GStringImpl
     content=[values:[10],
              class:class org.codehaus.groovy.runtime.GStringImpl,
              bytes:[49, 48], strings:[, ], valueCount:1]
     out=10

2。 java.lang.String中

groovy:000>s2="10"; "type=${s2.class}\n
                        contents=${s2.properties}\n
                        out=${s2.toString()}"
===> type=class java.lang.String
     contents=[class:class java.lang.String, bytes:[49, 48], empty:false]
     out=10

可以有很多实现....


虽然在这种情况下s1 == s2,您可能会遇到s1 != s2s1.toString() == s2.toString()

的情况
assert versionTagPrefix?.toString() == ""