Dredd - Как изменить результат теста на основе кода статуса http? - PullRequest
0 голосов
/ 25 октября 2019

Я разрабатываю API, используя apiary.io и Swagger. Я хочу протестировать API с помощью dredd, и для нормальных ответов API (код состояния HTTP 200) это нормально. Однако, когда API возвращает другой код состояния в зависимости от параметров (например, 403), dredd сообщает, что тест не пройден. Я хотел бы отметить тест как успешный, с дополнительным сообщением регистрации.

Я пробовал это:

hooks.afterEach(function(transaction){
    if (transaction.real){
        switch (transaction.real.statusCode){
            case "400":
            case "403":
            case "406":
                transaction.fail=false;
                hooks.log('Failed, but expected by the API');
        }
    }
});

Однако это не работает, тест все еще отмечен какне удалось. Чего мне не хватает?

1 Ответ

0 голосов
/ 25 октября 2019

Является ли ваш документ описания API в OAS3? Возможно, у вас проблема . Dredd должен помечать случаи, отличные от 2xx, как пропущенные автоматически в случае OAS2, но он пока не делает этого для OAS3, поддержка этого формата все еще является экспериментальной.

Обходным решением будет установить транзакцию какпропустил себя перед крючком:

hooks.beforeEach(function(transaction){
    if (transaction.real){
        switch (transaction.real.statusCode){
            case "400":
            case "403":
            case "406":
                transaction.skip = true;
        }
    }
});
...