Go:如何创建带有单元测试值的 schema.ResourceData 类型的实例?
短信预约 -IT技能 免费直播动态提醒
学习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 类型的实例?》的详细内容,更多关于的资料请关注编程网公众号!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341