Grails java.io.File嘲笑

Ako*_*pez 9 grails spock

有没有办法在Grails中模拟文件进行单元测试?

我需要测试文件大小和文件类型,如果我可以模拟它们会有所帮助.

任何资源链接都会有所帮助.

Lar*_*ari 8

您可以使用Spock在Groovy代码中模拟java.io.File.

以下是如何执行此操作的示例:

import spock.lang.Specification

class FileSpySpec extends Specification {
    def 'file spy example' () {
        given:
        def mockFile = Mock(File)
        GroovySpy(File, global: true, useObjenesis: true)
        when:
        def file = new File('testdir', 'testfile')
        file.delete()
        then :
        1 * new File('testdir','testfile') >> { mockFile }
        1 * mockFile.delete()
    }
}
Run Code Online (Sandbox Code Playgroud)

我们的想法是从java.io.File构造函数调用expectation返回文件的Spock mock,它具有预期的参数.

  • 对于那些和我一样对“useObjenesis: true”感到好奇(和无知)的人。根据该网站,[Objenesis](http://objenesis.org/) 允许在不传递构造函数参数的情况下创建对象。(请注意,[File](https://docs.oracle.com/javase/7/docs/api/java/io/File.html) 的所有构造函数都需要参数) (2认同)