aws openidconnectprovider pulumi リソースから入力を取得し、iam ロールを作成し、その oidc プロバイダーからのインクルードをアタッチする関数があります。サプライヤーの情報の役割ポリシーを引き受けます。
質問: この関数のテストを作成し、関数呼び出しへの入力として oidc プロバイダーをモックしようとしています。テスト出力が期待どおりになるように正しくシミュレートする方法がわかりません。現在、シミュレートされたデータが期待どおりに出ていないようです。
モックを正しく使用していないようですが、ここでの例はあきらめます
その他のドキュメントはこちら
リーリー リーリー リーリーpackage mypkg import ( "github.com/pulumi/pulumi-aws/sdk/v5/go/aws/iam" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) func createmycustomrole(ctx *pulumi.context, name string, oidcprovider *iam.openidconnectprovider, opts ...pulumi.resourceoption) (*iam.role, error) { role := &iam.role{} componenturn := fmt.sprintf("%s-custom-role", name) err := ctx.registercomponentresource("pkg:aws:mycustomrole", componenturn, role, opts...) if err != nil { return nil, err } url := oidc.url.applyt(func(s string) string { return fmt.sprint(strings.replaceall(s, "https://", ""), ":sub") }).(pulumi.stringoutput) assumerolepolicy := pulumi.sprintf(`{ "version": "2012-10-17", "statement": [{ "effect": "allow", "principal": { "federated": "%s" }, "action": "sts:assumerolewithwebidentity", "condition": { "stringequals": { "%s": [ "system:serviceaccount:kube-system:*", "system:serviceaccount:kube-system:cluster-autoscaler" ] } } }] }`, oidcprovider.arn, url) roleurn := fmt.sprintf("%s-custom-role", name) role, err = iam.newrole(ctx, roleurn, &iam.roleargs{ name: pulumi.string(roleurn), description: pulumi.string("create custom role"), assumerolepolicy: assumerolepolicy, tags: pulumi.tostringmap(map[string]string{"project": "test"}), }) if err != nil { return nil, err } return role, nil }
newresource
の使い方が間違っていたことが判明しました。
getopenidconnectprovider がテスト関数で呼び出されると、リソースを読み取り、新しいリソース出力を作成し、mocks.newresource への呼び出しをトリガーします。
修正は、モック出力を使用して、getopenidconnectprovider
によって返されるリソース タイプの newresource 関数呼び出しで if ステートメントを定義することです。
リーリー
以下のコード スニペットは、上記の newresource に加えられた変更と比較して違いが示されないように、
を変更した場所です。 リーリー
以上がGo 単体テストで Pulumi リソースをモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。