Я пытаюсь получить 100% охват моего проекта AWS, но я не знаю, как имитировать методы, которые не принимают аргументы И должны пройти тест, который заставляет их работать должным образом (возвращаемые значения), и другоетест, который заставляет их выдавать ошибку.Я не могу изменить технологию, которую использую, поэтому, пожалуйста, попробуйте помочь мне с вещами, которые я использую сейчас.
Я использую Nodejs, Typescript, Mocha, Chai, nyc и mock-require для насмешек.
Это проект AWS, поэтому я работаю с методами AWS
Вот функция и метод, я издеваюсь, описываюAutoScalingGroups ()
export async function suspendASGroups() {
const autoscaling = new AWS.AutoScaling();
const asgGroups = await autoscaling.describeAutoScalingGroups().promise();
if (!asgGroups.AutoScalingGroups) {
throw new Error("describeAutoScalingGroups inside of suspendAGSGroups didn't return any groups");
}
// some other stuff below
Это ТЕСТ, которыйдолжен потерпеть неудачу (выше этого есть тест той же функции, которая будет возвращать обычные значения)
it('Should throw an error, should fail', async () => {
assertNative.rejects(awsFunctions.resumeAGSGroups());
try {
let result = await awsFunctions.suspendASGroups();
} catch (e) {
assert.isTrue(
e.name == 'Error' &&
e.message == "describeAutoScalingGroups inside of suspendAGSGroups didn't return any groups",
'describeAutoScalingGroups in suspendAGSGroups didnt have the proper error message'
);
}
});
А вот макет кода
public describeAutoScalingGroups() {
const data = (): AWS.AutoScaling.Types.AutoScalingGroupsType => {
return {
// some values here
};
return {
promise: data
};
}
Я ожидаю, что смогучтобы пройти оба теста, тот, который ожидает обычное значение, и тот, который ожидает, что он выдаст ошибку
, вот изображение покрытия: https://i.imgur.com/D6GX0tf.png
Я ожидаю, что красная часть куйти:)
Спасибо