首页 > 解决方案 > 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 消息的错误。我如何断言错误?

标签: goerror-handlingterratest

解决方案


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")
}

推荐阅读