如何解决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 举报,一经查实,本站将立刻删除。