0
我在gock单元测试中嘲笑grails 3.1.7中的InputStream
有问题。Spock mocking inputStream导致无限循环p2
我在link之前问过类似的问题。
问题已解决,但当我添加@CompileStatic
注释时,它返回。我的代码:
@CompileStatic
class MongoImage implements Image {
GridFSFile gridFSFile
...
byte[] getBytes() {
((GridFSDBFile) gridFSFile).inputStream?.bytes
}
}
我的测试:
given:
List<Byte> byteList = "test data".bytes
def inputStream = GroovyMock(InputStream)
def gridFSDBFile = Mock(GridFSDBFile)
def mongoImage = new MongoImage(gridFSDBFile)
when:
List<Byte> result = mongoImage.getBytes()
then:
1 * gridFSDBFile.getInputStream() >> inputStream
1 * inputStream.getBytes() >> byteList
0 * _
此测试执行陷入无限调用:
1 * inputStream.close()
1 * inputStream.read(...)
对于我刚才的问题它是通过更换Mock(InputStream)
到GroovyMock(InputStream)
解决。但是当我申请@CompileStatic
时,问题又回来了。
请提供[MCVE(http://stackoverflow.com/help/mcve),即完全用类进口(其中做'GridFSFile'和'图像'来自,例如?),也是一个完整的测试课程。请不要在没有上下文的情况下发布片段,问题可能出现在您未显示的代码中。 – kriegaex
我猜spock不能和'@ CompileStatic'和'@ TypeChecked'一起工作。 – Opal