0
spock unit-testsについては、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 * _
このテストの実行が無限の呼び出しに分類されます。それはGroovyMock(InputStream)
にMock(InputStream)
を置き換えることで解決した私の前の質問については
1 * inputStream.close()
1 * inputStream.read(...)
。しかし、私が@CompileStatic
を適用したとき、問題は戻ってきました。
を提供してください[MCVE](http://stackoverflow.com/help/mcve)、 'GridFSFile'と'行う輸入とのすなわち完全なクラス( Image'など)、また完全なテストクラスです。文脈なしでスニペットを投稿するだけではなく、表示されないコードに問題がある可能性があります。 – kriegaex
私はspockが '@ CompileStatic'と' @ TypeChecked'でも動作しないと思います。 – Opal