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