Я пытаюсь имитировать некоторые сервисы AWS в своем проекте, я поместил их в папку mocks
напр.
__mocks__
|__ aws-sdk.ts
Итак, в aws-sdk.ts
export const getFn = jest
.fn()
.mockImplementation(() => ({ promise: ssmGetParameterMockResponse }))
export class SSM {
getParameter = getFn
}
aws_sdk.SSM = SSM
module.exports = aws_sdk
ssmGetParameterMockResponse находится в другом фиктивном файле данных со значением
export const ssmGetParameterMockResponse = jest.fn().mockReturnValue(
Promise.resolve({
Parameter: {
Value: JSON.stringify({
Endpoint: 'http://abcdef.com',
AppToken: 'AppToken',
UserToken: 'UserToken',
Name: 'Bleh',
}),
},
})
)
в моем файле ts
const ssm = new AWS.SSM()
const credentials = ssm
.getParameter({
Name: String(CRED),
})
.promise()
.then(({ Parameter }) => JSON.parse(Parameter?.Value || '{}'))
const { Endpoint, UserToken, AppToken, Name } = await credentials
В моем тестовом файле, когда я пробую этот тестовый пример, все работает нормально, мои фиктивные данные поступают из моей папки mocks, которая использует данные из ssmGetParameterMockResponse, но есть несколько тестовых случаев, когда у меня есть чтобы перезаписать значения, предоставленные из ssmGetParameterMockResponse , я имею в виду, что мне нужно удалить свойство «имя», чтобы проверить, не работает ли код, и я правильно их поймаю,
Я попробовал следующее в моем конкретном тестовом примере, где я хотел удалить свойство name
const spyyy = jest.spyOn(mock, 'ssmGetParameterMockResponse')
spyyy.mockReturnValue(
Promise.resolve({
Parameter: {
Value: JSON.stringify({
Endpoint: 'http://abcdef.com',
AppToken: 'AppToken',
UserToken: 'UserToken',
}),
},
})
)
но не повезло, но я все равно правильно получаю детали, есть ли другой способ перезаписать макеты ???