首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在验收测试中测试地形进口?

如何在验收测试中测试地形进口?
EN

Stack Overflow用户
提问于 2021-08-17 22:29:45
回答 1查看 386关注 0票数 1

我发现了一个关于在验收测试中测试文章tf import

代码语言:javascript
复制
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到底做了什么)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-01 08:22:37

测试导入的设置是正确的。使用ImportStateImportStateVerify添加步骤应该足够了。

terraform-provider-sdk 函数中实现了测试导入。它的工作原理:

  1. 前面的步骤使用testcase、workdir和state应用terraform配置。
  2. 如果下一步将ImportState设置为true,则使用ResourceName从testcase状态获取资源id (如果为此步骤设置了ImportStateIdFuncImportStateId )。
  3. 创建空的workdir,初始化新的空状态,并从上一步导入资源名和id。不会发生冲突,因为这是一个单独的空状态。
  4. 如果ImportStateVerify为真,则比较前一步和导入步骤中的资源状态,它们应该是相同的。
  5. 如果设置了ImportStateCheck函数,则使用此函数进行自定义状态验证。如果直接状态比较无效,则可以使用此方法。
  6. 丢弃临时工作员。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68824711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档