gpt4 book ai didi

unit-testing - 导出 Golang 包进行测试?

转载 作者:数据小太阳 更新时间:2023-10-29 03:10:29 24 4
gpt4 key购买 nike

在尝试对使用以下结构的代码进行测试时:

type DatabaseSt struct {
DBName string
DBConnectionStr string
dbConnection *sql.DB
InterpolateParams bool

//Archived Databases
MinFinancialYear int
MaxFinancialYear int
}

//DatabaseContext The context to use if the use of a database is needed.
type DatabaseContext struct {
*Context
Database DatabaseSt
}

我偶然发现了 this Medium article声称您可以在测试代码中导出 Golang 包及其内部结构。不幸的是,我不确定他们最后的话是什么意思:

export_test.go only be include when we run go test, so it not pollute your API, and user never access them(not like java’s @VisibleForTesting), and it build a bridge let unexported one accessible in math_test

更糟糕的是,复制它会导致无处可Go:

enter image description here

/* 这里,context 是包含我想要完全访问的结构的包 */

我基本上需要能够设置 DatabaseStdbConnection 进行测试,而无需修改源代码。

最佳答案

添加以下名为 export_test.go 的文件:

package context

func SetDbConnection(DatabaseSt *ds, db *sql.DB) {
ds.dbConnection = db
}

像这样从同一目录中的其他测试文件使用它:

package context_test

import "context"

func FooTest(t *testing.T) {
...
context.SetDbConnection(ds, db)
...
}

或者,在上下文包中编写测试,这样您就可以完全访问成员:

package context

func FooTest(t *testing.T) {
...
ds.dbConnection = db
...
}

关于unit-testing - 导出 Golang 包进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52781902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com