我已經像這樣使用 AWS CDK 創建了一個 S3 存盤桶
new s3.Bucket(this, 'MyFirstBucket', {
versioned: true,
encryption: s3.BucketEncryption.KMS,
blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
});
但是我在為它撰寫 Jest 測驗方面并沒有取得多大成功。我嘗試關注https://docs.aws.amazon.com/cdk/v2/guide/testing.html#Capturing但并沒有真正走運。該s3.BlockPublicAccess.BLOCK_ALL收益
{"blockPublicAccess": {"blockPublicAcls": true, "blockPublicPolicy": true, "ignorePublicAcls": true, "restrictPublicBuckets": true}}
但是當我嘗試在測驗中對此進行比較時,該物件由
..."PublicAccessBlockConfiguration": {"BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true}...
我設法通過了測驗,但只能從 CDK.out json 檔案中復制內容,但是我覺得這與應該如何撰寫測驗有悖常理。以下是我的測驗代碼,任何幫助將不勝感激。
expect(template).toHaveProperty("AWS::S3::Bucket", {
blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL
}) ```
uj5u.com熱心網友回復:
這是預期的行為。所述細粒斷言 “所產生的AWS CloudFormation模板的測驗特定方面”。模板具有PascalCase屬性鍵。所以我們不能斷言camelCaseTypescript CDK 類中的鍵。
不是問題!只需將其轉換camelCase為PascalCase:
const blockAllAccess = s3.BlockPublicAccess.BLOCK_ALL as unknown as Record<string, string>;
const blockAllAccessPascal = Object.entries(blockAllAccess).reduce(
(acc, [k, v]) => {
acc[k[0].toUpperCase() k.substring(1)] = v;
return acc;
}, {});
expect(bucketStack).toHaveResourceLike('AWS::S3::Bucket', {
PublicAccessBlockConfiguration: blockAllAccessPascal,
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/406784.html
標籤:
