【问题标题】:Terratest throws error on assertions on errorsTerratest 对错误的断言抛出错误
【发布时间】:2020-07-08 15:47:52
【问题描述】:

你好我有以下测试

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)

如果我删除断言,则会按预期抛出带有字符串消息的错误。如何断言错误?

【问题讨论】:

    标签: go error-handling terratest


    【解决方案1】:

    assert.Errorasserts that a function returned an error.,就像:

    if err == nil {
        t.Error("no error returned")
    }
    

    但是这里给定的参数是tags,而tags是一个字符串,根据terratest documentation,你为什么会收到以下错误:

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

    【讨论】:

    • 这给了我一个关于“标签”值没有被使用的错误
    • 我添加了一个 print 语句,只是为了使用变量。但测试失败
    • Mmmh,好的,我阅读了OutputE 代码,并且该函数仅在无法读取标准输出但未检查 terraform 成功时才返回错误。你能试试这个吗:validTags := terraform.OutputForKeys(t, terraformOptions, []string{"test_required_tags"})assert.Contains(t, validTags, "test_required_tags")
    • 我已经用其他解决方案编辑了我的评论以提高 lisibility
    • 我想检查失败,我想检查输出是否抛出错误,这里是如何捕获的?你可以解释吗?我想断言 terraform.Output 抛出错误
    猜你喜欢
    • 2019-04-19
    • 2018-07-20
    • 1970-01-01
    • 2018-10-07
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2020-02-26
    相关资源
    最近更新 更多