クラスをクリーンアップしようとすると問題が発生します。
void testFileExists() {
FileObject file = EasyMock.createMock(FileObject.class)
VfsFileSystemManager.metaClass.getFile = {String s, String a ->return file}
FileObject.metaClass.exists = {-> return true}
assertEquals true, siteManagerHelper.fileExists(STRING, STRING)
}
void testFileNotExists() {
FileObject file = EasyMock.createMock(FileObject.class)
VfsFileSystemManager.metaClass.getFile = {String s, String a ->return file}
FileObject.metaClass.exists = {-> return false}
assertEquals false, siteManagerHelper.fileExists(STRING, STRING)
}
一度に 1 つ実行すると正常に動作しますが、両方を同時に実行すると、exists() は常に true を返します (最初の .metaclass を false に変更すると、false が返されます)。したがって、メタクラスを解体していないと思います。
このクラスは GroovyTestCase を拡張しており、以下を追加する必要があることを確認しました。
def remove = GroovySystem.metaClassRegistry.&removeMetaClass
remove FileObject
しかし、それは機能していません。
助けてください!
編集:
私はgrails 1.3.7とgroovy 1.6.8を使用しています
private boolean fileExists(String path, String file){
if(path != null && path != ""){
FileObject fileToCheck = fsManager.getFile(path, file)
boolean fileExists = fileToCheck.exists()
logger.debug "File exists? ${fileExists}"
return fileExists
}
logger.debug "The path is null or empty"
return false
}