Ещё одна бесячая штука в Go — то, что тесты надо ронять вручную
В расте штатный способ уронить тест — паника. Поэтому можно делать всякие unwrap(), и прочие быстрые-похуистичные способы достать значение
Но не в го, здесь давай if err != nil { t.Fatal(err) }. Возможно есть хелпер который и так это делает, но чет я его не нашла
@mo никто в го тесты руками не роняет, есть https://github.com/stretchr/testify
@zhulik почему это не в стандартной либе, вот в чем блин вопрос
@mo потому, что того, что в стандартной либе в целом достаточно для тестов. Testify предоставляет диффы и кучу всего другого, чего ни в одну стандартную библиотеку обычно не включают. Я последнее время Ginkgo использую, там вообще все без testing пишется, и больше rspec напоминает
@zhulik дак в стандартной либе даже банальнейших ассертов нет, вот в чем мем
@mo дык ассерт это буквально условие и какой-то вызов чтобы тест обвалить, и то и другое в языке есть. Другое дело что классический ассерт сам по себе бесполезен, падает и все. А чтобы что-то осмысленное при обвале показать - в любом языке все равно какую-нибудь либу тащить.
@zhulik знаешь, в чем разница между го и растом? В расте для банальных вещей ты дёргаешь банально реализованный метод из стандартной либы. А в го ты идёшь и пишешь свой банальный велосипед, или подключаешь не менее банальную стороннюю зависимость (коих ещё и больше одной на выбор)
@mo и раст вот прям покажет репорт, какое значение ожидалось, какое получилось, и какой дифф, если это какой-нибудь хэш или массив прям из коробки?
@zhulik дифф не знаю, но assert_eq!(a, b) напечатает оба значения если не совпало.
@mo хорошо, но все равно в реальном мире что-то более высокоуровневое нужно. В целом у раста, как у более молодого языка, больше шансов сделать все красивее, используя опыт го в том числе.
Кстати, по поводу встроенных фич: парсер json хотя бы в раст завезли, или надо банальную стороннюю либу тащить?😉