Я поместил это в свой тест Спока:
GroovyMock( File, global: true)
File.createNewFile() >> null
... который, как я понимаю, является неортодоксальным / глупым / любопытным: createNewFile
- это не статичный c метод.
Используемый код выглядит следующим образом:
if( indexInfoFile.createNewFile() ) {
... из моих экспериментов выясняется, что подобная насмешка createNewFile
всегда возвращает false
, даже если вы пытаетесь вставить блок в макет :
GroovyMock( File, global: true)
File.createNewFile() >> {
log.info( 'Hello mum!')
}
... сообщение журнала не распечатывается, но createNewFile
снова возвращает false
.
Это на самом деле то, что я хотел (т.е. издеваться над возвращением false
от createNewFile
).
Является ли это преднамеренным, задокументированным поведением?
PS Предостережение: из моего опыта / экспериментов сегодня нет никаких сомнений в том, что этот фиктивный метод заменяет все вхождения вызова этого метода, на любом File
экземпляре. Тем не менее, он также имеет некоторые тревожные побочные эффекты: например, каталог, который я создал в своем блоке given
до того, как найдены строки 2 GroovyMock
, NOT будет существовать впоследствии, все еще в given
блок, когда я пошел
myDirPath.toFile().exists()
... Я предполагаю, что это потому, что toFile
включает вызов createNewFile
...