Groovy/Spock中的u.u是什么意思

Groovy/Spock中的u.u是什么意思,groovy,spock,Groovy,Spock,我在一些Spock规范的源代码中看到了.\u。有人知道那是什么意思吗 比如说, def "test something"() { given: someClass = Mock(SomeClass) and: 1 * someClass.someMethod() >> returnSomething 0 * _._ when: String str = someClass.someMethod().toString()

我在一些Spock规范的源代码中看到了
.\u
。有人知道那是什么意思吗

比如说,

def "test something"() {
    given:
    someClass = Mock(SomeClass)

    and:
    1 * someClass.someMethod() >> returnSomething
    0 * _._

    when:
    String str = someClass.someMethod().toString()

    then:
    str == 'returnedValue'
}

\
就像一个通配符

_.someMethod()
同样,表示对任何模拟对象调用的方法
someMethod

myDomain._
表示在
myDomain
上调用的任何内容

遵循这个逻辑,。意味着在任何模拟对象上调用任何东西。如果您不想再调用任何方法,这将非常有用:

0 * _._
额外阅读


您应该阅读更多关于
可以用于哪些类型的信息。

它似乎意味着“任何交互”。请参阅哦,感谢您的快速响应。在我提供的示例中,我们为模拟对象的方法定义了所需的行为。并且它预计会被调用一次,因此
1*
。但是下一行还有
。\u
。这是否意味着
0*.\u
意味着任何其他类的其他方法都不能被调用?
0*.\u
正是您编写的方法。一些开发人员在测试方法的最后添加它,以确保没有其他交互发生。这不是一个好的实践。因为当你以这种方式开发测试时,它们会得到“修复”。例如,重构和引入代码更改是困难的,因为您引入了在编写测试时未考虑的新交互-尽管合同仍然保留,但结果失败。
0*.\u
可以缩写为
0*.
。有关详细说明,请参阅。