如何使IDEA识别Spock的with()方法?

时间:2018-08-20 15:34:12

标签: intellij-idea groovy ide spock

我在Groovy上编写并使用Spock框架进行测试。 前段时间,IDEA完全支持Spock。 当我在where-block中的功能(测试方法)中编写代码时:

with(someObject) {
 intField == 1
 ...
}

IDEA可以正确识别someObject并了解intField是对象的字段,而且它为我提供了对象的其他字段。因此,在Spock的with()块中,我感觉像是从DefaultGroovyMethods的任何闭包(with{}each{}find{}等)中一样,但不需要使用明确的it参数。

(因此,我写的是with(someObject) { intField == 1 }就是someObject.with { assert it.intField == 1 }

片刻之后,IDEA错过了Spock的with()方法支持。 现在,由于认为它是someObject类的对象,因此无法识别参数的类(例如Object)。闭包内的任何字段均无法识别。显式it的使用无济于事。

enter image description here

在完成一些IDEA更新后,所有内容都已修复,但是在重新启动后,问题又回来了。

有人知道如何解决吗?

我正在使用IDE的最新版本-2018.2

1 个答案:

答案 0 :(得分:0)

我刚刚在2018.1上对此进行了测试,并且遇到了与您相同的问题。我没有运行代码,但是我相当确定代码将被识别并执行。在我看来,这似乎是Intellij的错误,可能值得在他们的票证跟踪系统中提交错误报告。