$GOPATH/src/... 和 vendor/... 版本不同

$GOPATH/src/... and vendor/... versions are different

我的项目使用 Go 1.8,依赖于 github.com/stretchr/testify。我使用 go get -u github.com/stretchr/testify 检索了最新版本,$GOPATH/src 中的版本似乎是正确的。

我在Gopkg.toml中添加了最新版本号作为约束:

[[constraint]]
  name = "github.com/stretchr/testify"
  version = "1.1.4"

我然后 运行 dep ensure -update 然后 dep status 更新 vendor 目录(dep status 的输出):

github.com/stretchr/testify  ^1.1.4  v1.1.4  69483b4  69483b4  1   

$GOPATH/src 中的版本在文件 github.com/stretchr/testify/assert/assertions.go 中包含函数 PanicsWithValue:

func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
    // ...
}

func PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool {
    // ...
}

func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
    // ...
}

但在 vendor 中的版本中缺少该功能:

func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
    // ...
}

func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
    // ...
}

我做错了什么?我想在我的测试中使用函数 PanicsWithValue。我什至尝试删除整个 vendor 目录并重建它。

通过将版本固定为 v1.1.4,您明确告诉 dep 使用不包含您想要的功能的版本(在 GitHub 上查看 testify 包的历史记录- v1.1.4 来自去年 9 月,PanicsWithValue 是今年 6 月添加的)。如果您取消固定版本 (version = "*"),它应该使用包含 PanicsWithValue.

的 master@HEAD