我发现了一个关于在验收测试中测试文章的tf import:
func TestAccExampleThing_basic(t *testing.T) {
/* ... potentially existing acceptance testing logic ... */
resource.ParallelTest(t, resource.TestCase{
/* ... existing TestCase functions ... */
Steps: []resource.TestStep{
/* ... existing TestStep ... */
{
ResourceName: "example_thing.test",
ImportState: true,
ImportStateVerify: true,
},
},
})
}不过,我还是觉得很困惑。假设existing TestCase function将初始化一些小的配置&运行tf plan & tf apply,这样tf状态文件就不会是空的,那么在步骤(测试用例) #2中会发生什么呢?按照我的想法,如果我们试图在本地(在step#1之后)导入已经处于tf状态的资源,那么应该会出现错误或其他问题,对吗?
或者更令人困惑的是,这个合并的测试中的步骤#2和#4都是terraform-provider-aws中的导入(据我所见,step#3更新了在step#1中创建的状态中的一个属性,但是step#2和step#4到底做了什么)?
发布于 2021-09-01 08:22:37
测试导入的设置是正确的。使用ImportState和ImportStateVerify添加步骤应该足够了。
在terraform-provider-sdk 函数中实现了测试导入。它的工作原理:
ImportState设置为true,则使用ResourceName从testcase状态获取资源id (如果为此步骤设置了ImportStateIdFunc或ImportStateId )。ImportStateVerify为真,则比较前一步和导入步骤中的资源状态,它们应该是相同的。ImportStateCheck函数,则使用此函数进行自定义状态验证。如果直接状态比较无效,则可以使用此方法。https://stackoverflow.com/questions/68824711
复制相似问题