gpt4 book ai didi

unit-testing - 是否可以对我的包不导入特定包进行单元测试?

转载 作者:IT王子 更新时间:2023-10-29 02:27:31 24 4
gpt4 key购买 nike

我想确保我的 Go 包使用“dal”包提供的 var 实例,并且不会意外地直接导入和使用数据库访问包。

我想我可以在源代码上进行正则表达式搜索,但我想知道是否有办法通过标准 Go 测试来确保规则?

只是想知道我要做什么:

接口(interface)包:

package dal

type UserDal interface {
GetUser(id int) User
}

实现包:

package dal_db_specific

import (
"some_db"
"dal"
)

type UserDalDbSpecific struct {
}

func (_ UserDalDbSpecific) GetUser(id int) User {
some_db.executeQuery(...)
...
return user
}

register_dal() {
dal.UserDal = UserDalDbSpecific{}
}

用户代码包:

import (
"dal"
"some_db" <-- Fail here!
)

func someFunc() {
user := dal.User.GetUser(1) // Right way
some_db.DoSomething() <-- Fail here!
}

最佳答案

比grep稍微可靠一点:使用标准parser package解析目标源并检查 AST。你会寻找 ImportSpec与数据库访问包匹配的节点。如果发现任何问题,则测试失败。

关于unit-testing - 是否可以对我的包不导入特定包进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43344584/

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