swift - FMDB unit test if created table successfully didn't pass -
i want unit test if table has been created fmdb.
db.creategoodtable("good") xctasserttrue(db.tableexists("good")!) i can't pass test. error is:
fmdatabase <fmdatabase: 0x6080000bfb00> not open. so try open before check exist:
db.creategoodtable() db.open() xctasserttrue(db.tableexists("good")!) still same error.
ps: getdatabase passed unit test without issue db.
func creategoodtable() { let sql = "create table if not exists good(name text)" guard let db = self.getdatabase("databasename"), db.open() else { return false } { try db.executeupdate(sql, values: nil) } catch let er nserror { print(er) } return db.close() } edit
func getdatabase(_ dbname: string) -> fmdatabase? { let dbpath = databasepath + "/" + dbname guard filemanager.default.fileexists(atpath: dbpath) else { return nil } return fmdatabase(path: dbpath) }
the db reference in creategoodtable setting local db variable new fmdatabase instance, discarded when creategoodtable returns. db reference in test never opened. assuming created fmdatabase instance, open it, not creating new instance , not creating local variable:
func creategoodtable() -> bool { let sql = "create table if not exists good(name text)" guard open() else { return false } { try executeupdate(sql, values: nil) } catch let er nserror { print(er) close() return false } return close() } i'm inferring code snippets creategoodtable implemented in fmdatabase extension or subclass. if not, show more how defined , instantiated db. basic idea want make sure don't create second, local fmdatabase instance , try reference elsewhere.
Comments
Post a Comment