微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

golang模块名称更改导致本地测试失败

如何解决golang模块名称更改导致本地测试失败

我有别人的代码。其模块名称的格式如下:

module github.com/foo/bar/v3

我在本地进行了一些更改,并将本地go.mod更新为v4,而不是v3,但这现在导致本地运行测试失败(请参见下文,我已将输出通用化。)

注意:go.sum此时为空。

$ go test -v

go: finding module for package github.com/foo/bar/v3
go: found github.com/foo/bar/v3 in github.com/foo/bar/v3 v3.0.0
# github.com/foo/bar/v4_test [github.com/foo/bar/v4.test]
./some_test.go:232:19: x.Y undefined (type *package.Example has no field or method Y)
FAIL    github.com/foo/bar/v4 [build Failed]

我不确定为什么要尝试查找该软件包的实际v3版本,并因此更新go.sum使其包含其中?

我从测试文件中看到该软件包使用了不同的软件包名称(例如package foo_test),因此在编写其测试代码时,它不依赖于导出的数据结构。所以也许这就是为什么会这样?它会看到对x.Y的引用,然后在github中查找x

但是我不确定为什么当我在go.mod文件中使用v3引用时测试能否正常运行?

关于分叉项目时,这里发生了什么以及应该如何碰撞go模块的任何正确想法?

谢谢。

解决方法

如果更改module文件中的go.mod名称,则必须用更新的import名称替换所有module路径。

在用github.com/foo/bar/v3替换模块github.com/foo/bar/v4时,在整个项目中,必须用find and replace github.com/foo/bar/v3 github.com/foo/bar/v4引用所有$ go test -v

然后您的cypress.get('').should('')应该可以正常运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。