Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift FMDB单元测试是否成功创建表';不及格_Swift_Fmdb - Fatal编程技术网

Swift FMDB单元测试是否成功创建表';不及格

Swift FMDB单元测试是否成功创建表';不及格,swift,fmdb,Swift,Fmdb,我想对FMDB是否成功创建了表进行单元测试 db.createGoodTable("good") XCTAssertTrue(db.tableExists("good")!) 我不能通过考试。错误是: The FMDatabase <FMDatabase: 0x6080000bfb00> is not open. 还是一样的错误 PS:getDatabase通过了单元测试,无需任何问题即可获得数据库 func createGoodTable() { let sq

我想对FMDB是否成功创建了表进行单元测试

db.createGoodTable("good")
XCTAssertTrue(db.tableExists("good")!)
我不能通过考试。错误是:

 The FMDatabase <FMDatabase: 0x6080000bfb00> is not open.
还是一样的错误

PS
getDatabase
通过了单元测试,无需任何问题即可获得数据库

func createGoodTable() {
        let sql = "create table if not exists good(name text)"
        guard let db = self.getDatabase("databaseName"), db.open() else {
            return false
        }
        do {
            try db.executeUpdate(sql, values: nil)
        } catch let er as NSError {
            print(er)
        }
        return db.close()
}
编辑

func getDatabase(_ dbName: String) -> FMDatabase? {
    let dbPath = databasePath + "/" + dbName
    guard FileManager.default.fileExists(atPath: dbPath) else {
        return nil
    }
    return FMDatabase(path: dbPath)
}

createGoodTable
中的
db
引用正在将一个本地
db
变量设置为一个新的
FMDatabase
实例,当
createGoodTable
返回时,该实例将被丢弃。测试中的
db
引用从未打开。假设您已经创建了一个
FMDatabase
实例,只需打开它,不创建新实例,也不创建局部变量:

func createGoodTable() -> Bool {
    let sql = "create table if not exists good(name text)"

    guard open() else {
        return false
    }

    do {
        try executeUpdate(sql, values: nil)
    } catch let er as NSError {
        print(er)
        close()
        return false
    }

    return close()
}

我从您的代码片段推断,
createGoodTable
是在一些
FMDatabase
扩展或子类中实现的。如果没有,请向我们详细介绍如何定义和实例化
db
。但是基本的想法是,您要确保不创建第二个本地
FMDatabase
实例,然后尝试在其他地方引用它。

@Rob您是对的!我错了!我打了两次
FMDatabase
。非常感谢。
func createGoodTable() -> Bool {
    let sql = "create table if not exists good(name text)"

    guard open() else {
        return false
    }

    do {
        try executeUpdate(sql, values: nil)
    } catch let er as NSError {
        print(er)
        close()
        return false
    }

    return close()
}