1

我正在sqlmock对一组用 Go 编写的 Mysql 数据库查询处理程序进行单元测试。这适用于标准SELECT/INSERT查询。对于我们的数据库健康检查,我使用 GORMDB.Migrator().HasTable()来确保我们的数据库中存在一个特定的表。该功能似乎工作正常,但我很难模拟在HasTable(). 有人对如何使用它有任何建议sqlmock吗?

HasTable()正在执行以下查询: SELECT count(*) FROM information_schema.tables WHERE table_schema = '' AND table_name = '[table_name]' AND table_type = 'BASE TABLE'

我的测试辅助函数如下所示:

    sqlDB, mock, err := sqlmock.New()
    if err != nil {
        log.Panicln(err)
    }

    // This is the block I'm not sure about...
    mock.ExpectBegin()
    mock.ExpectQuery(regexp.QuoteMeta("SELECT count(*) FROM information_schema.tables WHERE table_schema = '' AND table_name = '[table_name]' AND table_type = 'BASE TABLE'")).
        WillReturnRows(sqlmock.NewRows([]string{"count(*)"}).
            AddRow(1))
    mock.ExpectCommit()

    setupSqlMock(sqlDB)
}

我已经尝试了 , 的所有组合mock.ExpectExec()mock.ExpectQuery()以及我能想到的所有方法。有任何想法吗?

4

0 回答 0