Search
Write a publication
Pull to refresh

Comments 12

Извечный unwrap тоже подбешивает, но без него еще хуже

В примере они заменяют отдельные вызовы assert, вполне лаконично. Кроме того, непонятно, почему некоторые ошибки пробрасываются наверх, а некоторые — распаковываются явно? Здесь вполне допустимо было бы сделать типом возврата Result<(), Box<dyn std::error::Error>> и пробрасывать всё. Или все через unwrap.

Спасибо большое за замечание! Обязательно поправлю. Мне не хватило времени глубже разобраться, а вообще rust book замечательный и ведет тебя за ручку от helloworld к многопоточному веб-серверу.

Поскольку Result - это конректный тип, лучше его вообще не возвращать (типы могут называться одинаково, но быть разными), а использовать `.expect("текст ошибки")` (или его вариант с вычисляемой лямбдой для строки).

Спасибо.

Получается, что вместо

serde_json::from_str(&res_body).unwrap();

лучше использовать

serde_json::from_str(&res_body).expect("Ошибка при десереализации JSON");

Правильно вас понял?

Для C# в реальном приложении, в котором наверняка был бы класс Pet, тест был бы ещё лаконичнее за счёт использования PostJson / GetJson с автоматической (де)сериализацией. Так что с питоном за первенство в лаконичности ещё можно посоревноваться :)

Да, в сыром виде многие языки выглядят громоздко, а в реальных проектах все подобные тесты превращаются в 3-4 строчки читабельного кода)

Так и не понял при чем тут языки программирования к тестированию API endpoint... Почему тогда нет примера на bash + curl + jq? ;)

Я думал будет какой-нибудь один универсальный unit-test, который может тестировать код на 10 языках...

Хотел добавить bash, но не нашел хорошего тестового фреймворка, либо плохо искал)

А что должен тестировать универсальный unit test?

Почему например to_json полностью, а to_string обрезали до to_s?

String это родной тип, он более вероятен в коде, а json - нет. Аналогично есть to_a, to_h, to_i, to_f. Не вижу смысла полностью расписывать вспомогательные функции. Да и как to_json как сократить?

но на первых порах с читабельностью кода на Ruby прям сложно.

Просто он сделан так, что бы читался как человеческий текст. Это вопрос вкуса.

К тому же вы сами выбрали специфичный фреймворк для теста, который это подчёркивает со своим DSL. Чистый ruby - это Minitest, он был бы более привычным.

Sign up to leave a comment.