go - Terratest 对错误的断言抛出错误
问题描述
你好我有以下测试
func badTags(t *testing.T){
terraformOptions := &terraform.Options{
TerraformDir: "../bad_values",
}
tags := terraform.Output(t, terraformOptions, "test_required_tags")
assert.Error(t, tags)
}
请注意,标签的值应该会引发错误,但我不断收到以下错误
string does not implement error (missing Error method)
如果我删除 assertion ,则会按预期抛出带有 String 消息的错误。我如何断言错误?
解决方案
assert.Error
断言一个函数返回了一个错误。,就像:
if err == nil {
t.Error("no error returned")
}
但是这里给定的参数是tags
,并且tags
是一个字符串,根据terratest 文档说明为什么您会收到以下错误:
string does not implement error (missing Error method)
使用OutputForKeys
必须解决您的问题,请尝试以下操作:
func badTags(t *testing.T){
terraformOptions := &terraform.Options{
TerraformDir: "../bad_values",
}
validTags := terraform.OutputForKeys(t, terraformOptions, []string{"test_required_tags"})
assert.Contains(t, validTags, "test_required_tags")
}
推荐阅读
- javascript - 试图从列表中获取单个项目
- filemaker - FileMaker 关于用户数据目录等的最佳实践?
- javascript - 为 javascript 设置 12 小时时间
- mysql - 如何选择出现在两个表中的实体的总和
- javascript - 弹出警报后立即消失
- c# - 用逗号打印偶数,除了 C# 中的最后一个不工作
- android - 如何在不按返回按钮和关闭按钮的情况下将数据从第二个活动传递到第一个(弹出窗口)?
- gitlab - 发布到组的 gitlab pypi 包注册表
- python - 如何将带有 pip 文件的文件夹配置为本地 pip 存储库
- elixir - 如何更新与 Ecto 的多对多关联