如何为自定义类型的扫描支持编写测试

时间:2018-07-09 15:20:56

标签: database go

database/sql包支持将自定义类型作为输入(对于查询的参数,类型为driver.Value)和输出(Row.Scan)。 自定义类型可以有选择地实现driver.Valuer和/或sql.Scanner接口,但是database/sql还内置了对从driver.Value类型派生的类型的支持。

由于我的代码依赖于对基于整数的类型的内置支持,因此我希望从SQL数据库强制执行脱序列/反序列化现在可以使用,并且将来仍然可以使用(回归测试):进行版本更改,或者由于类型所实现的方法更改可能影响database/sql行为。

对于输入案例,我可以使用driver.DefaultParameterConverter.ConvertValue

但是我看不到如何为Scan行为编写单元测试。我基本上想为自己的私有does in its own testsuitedatabase/sqlconvertAssign function,但对于我自己的类型。

在某些地方,我不知道可以取消注释代码并替换?????????????see on play.golang.org):

package main

import (
    "database/sql/driver"
    "log"
)

type myint int

func main() {
    in := myint(42)
    v, err := driver.DefaultParameterConverter.ConvertValue(in)
    if err != nil {
        log.Fatal(err)
    }
    _ = v

    /*
        var out myint
        err = ?????????????(v, &out)
        if err != nil {
            log.Fatal(err)
        }
        if out != in {
            log.Fatal("roundtrip failure")
        }
    */
}

0 个答案:

没有答案