登录
首页 >  Golang >  Go问答

Go:如何创建带有单元测试值的 schema.ResourceData 类型的实例?

来源:stackoverflow

时间:2024-04-01 13:54:40 454浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《Go:如何创建带有单元测试值的 schema.ResourceData 类型的实例?》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我想为与此类似的方法编写单元测试:

package bingo

import "github.com/hashicorp/terraform-plugin-sdk/helper/schema"

func dostuff(d *schema.resourcedata) error {
    foo := d.get("foo").(string)
    // ... operations using d
    return nil
}

有没有办法创建一个包含值的 schema.resourcedata 类型的实例?

我尝试创建 resourcedata 的“空白”实例,并通过 .set(...) 填充它。但它不起作用,因为不存在架构:

package bingo

import "github.com/hashicorp/terraform-plugin-sdk/helper/schema"

func TestDoStuff(t *testing.T) {
    d := schema.ResourceData{}
    err := d.Set("foo", "bar")
    if err != nil {
      t.Errorf("failed to set value: %s", err)
      // > failed to set value: Invalid address to set: []string{"foo"}
    }

    // test doStuff()
}

解决方案


schema.testresourcedataraw 正是这样做的:

package bingo

import "github.com/hashicorp/terraform-plugin-sdk/helper/schema"

var testSchema = map[string]*schema.Schema{
    "foo": {Type: schema.TypeString}
}

func TestDoStuff(t *testing.T) {
    d := schema.TestResourceDataRaw(t, testSchema, map[string]interface{
        "foo": "bar",
    })
    err := doStuff(d)
    if err != nil {
        t.Fail()
    }
}

Link to the documentation

感谢 @mkopriva 指出内置的帮助器方法。

以上就是《Go:如何创建带有单元测试值的 schema.ResourceData 类型的实例?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>