Spock间谍 - 在函数中使用的间谍类(Java)

时间:2018-01-23 14:01:29

标签: java groovy spock spy

如何在类中使用anthoer函数监视类文件?
当我在测试中使用新文件而不是在我的班级中时,可以用于测试。

public class Clazz {
    public void fun(String path) {
        File file = new File(path);
        if (!file.exists()) {
            throw new FileNotFoundException();
        }
    }
}


//Spock-test
class test extends Specification {
    given:
    GroovySpy(File, global: true, useObjenesis: true)
    def mockFile = Mock(File) {
      exists() >> true
    }
    new File(path) >> {mockFile}

    when:
    Clazz.fun("test.file")

    then:
    ...
    ...
}

1 个答案:

答案 0 :(得分:0)

关于间谍的官方spock文档:

  

使用此功能前请三思。改变可能会更好   规范下的代码设计。

http://spockframework.org/spock/docs/1.0/interaction_based_testing.html

没有理由在测试中使用间谍对象。如果您不喜欢重新设计代码,可以随时使用groovy元编程:

File.metaClass.exists = {true}