ฉันกำลังพยายามจะล้อเลียน AWS SecretsManager สำหรับหน่วยของฉันการทดสอบกับ Jest และ everytime ฉันชอบที่ ConfigError
ของรหัสคือค่อนข้างจะเหมือนนี้
//index.ts
import SM from "aws-sdk/clients/secretsmanager"
const secretManagerClient = new SM()
...
export const randomMethod = async (a: string, b: string) => {
let secret
const personalToken = {
SecretId: process.env.secretId,
}
secretManagerClient
.getSecretValue(personalToken, (err, data) => {
if (err) {
console.error(`[SECRETS MANAGER] Error fetching personal token : ${err}`)
} else if (data && data.SecretString) {
secret = data.SecretString
}
})
}
ฉันล้อเลียนก็เหมือนนี้:
//index.test.js
const mockGetSecretValue = jest.fn((SecretId) => {
switch (SecretId) {
case process.env.GITHUB_PERSONAL_TOKEN:
return {
SecretString: process.env.GITHUB_PERSONAL_TOKEN_VALUE,
}
default:
throw Error("secret not found")
}
})
jest.mock("aws-sdk/clients/secretsmanager", () => {
return jest.fn(() => {
return {
getSecretValue: jest.fn(({ SecretId }) => {
return mockGetSecretValue(SecretId)
}),
promise: jest.fn(),
}
})
})
อย่างไรก็ตามฉันเข้าใจข้อผิดพลาดนี้ถูกองฉัน: ConfigError: Missing region in config
ซึ่งฉันเข้าใจบางอย่าถึงขนาดนั้นหรอกครัย่างไรก็ตามฉันไม่เข้าใจว่าทำไมมันเกิดขึ้นในตอนล้อเลียนส่วนหนึ่ง...
ขอบคุณล่วงหน้า!
แก้ไข:ต้องขอบคุณที่ให้หน่วยที่ 1 ระงับคำตอบ,ผมจัดการหยุดมีข้อผิดพลาดนี้ด้วย ยังไงก็ตา getSecretValue()
วิธีการยังไม่กลับมาสอบความลับค่าฉันต้องการ
randomMethod()
และฉันกำลังพยายามเชื่อมโยงนั้นวิธีการที่นี่อย่าล้อเลี SecretsManager ตัวอย่างแล้วแม้ไม่มี config เกิดข้อผิดพลาดอีกต่อไปแล้วคgetSecretValue()
ไม่ใช่คืนความลับฉันต้องการ ฉันปรับปรุงที่รหัสทางด้านบน