当我尝试清理班级时遇到问题。
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)
}
当我当时运行一个时,它们工作正常,但如果我同时运行两个,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
}