Size: a a a

2018 November 01

ŹR

Źmićer Rubinštejn in pro.elixir
Я честно говоря тоже такие тесты пишу, но фактически смысл каждого теста что у тебя есть black box, и в случае acceptance test этим должно быть вся твоя система
источник

FM

Fey Martynov in pro.elixir
а так абстракция теста течёт, если щупать снаружи, а проверять внутренности. такие тесты тяжко поддерживать
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А в случае unit - blackbox это твой юнит
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Так то можно писать тест для генсервера - дернуть АПИ, а потом через рефлексию проверить его стейт
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но это типа фуфло
источник

FM

Fey Martynov in pro.elixir
ну да, нельзя безболезненно сменить структуру стейта или вот поменять етс на редис (например)
источник

FM

Fey Martynov in pro.elixir
хотя внешнее поведение не меняется
источник

АП

Артем Паньков in pro.elixir
Fey Martynov
чтобы проверить функциональность отображения онлайн юзеров в чяте надо зайти из-под двух юзеров и проверить, что один видит другого как онлайн
1 тест - после авторизации пользователь становится онлайн
2 тест - пользователь добавляет другого пользователя в контакт лист, отношение сохранено в бд
3 тест - пользователь из контактов текущего выходит в онлайн, а первый видит его онлайн статус
источник

FM

Fey Martynov in pro.elixir
когда мы тестируем как пользователь, нам плевать на бд
источник

FM

Fey Martynov in pro.elixir
как оно там внутри хранится
источник

FM

Fey Martynov in pro.elixir
пользователь твоей приложухи не заходит к тебе в етс, он только морду теребит
источник

АП

Артем Паньков in pro.elixir
Fey Martynov
пользователь твоей приложухи не заходит к тебе в етс, он только морду теребит
это не важно ваще никак. если результатом работы некого функционала интерфейса является изменение чего-то в базе данных, например - то и проверять надо изменение в базе данных. корректное отображение базы данных в интерфейсе могут проверять совсем другие сценарии. нет нужды многократно проверять одно и то же. тест должен проверять как можно более атомарные вещи.

если, к примеру, мы говорим об онлайн статусе пользователя - он может быть проверен десятком других сценариев.
источник

FM

Fey Martynov in pro.elixir
ну вот я не считаю хорошей практикой смешивать уровни абстракции, в том числе в тестах
источник

FM

Fey Martynov in pro.elixir
по твоей логике можно и состояние регистров в процессоре проверять – это более атомарно
источник

АП

Артем Паньков in pro.elixir
а по твоей логике дописать к тесту километр кода это здорово, можно себе галочку поставить, что не смешал уровень абстракций, а кто будет это разбирать потом - да пофиг
источник

FM

Fey Martynov in pro.elixir
у тебя же всё равно есть второй тест на то, что состояние из бд отображается юзеру на морде
источник

FM

Fey Martynov in pro.elixir
почему бы не объединить их в тест на одном уровне, что один юзер видит другого? так наоборот меньше кода будет
источник

FM

Fey Martynov in pro.elixir
и главное, потом меньше времени на поддержку потратишь, потому что они не поломаются при рефакторинге
источник

АП

Артем Паньков in pro.elixir
источник

АП

Артем Паньков in pro.elixir
потому что это потом превращяется вот в такое вот неподдерживаемое говно на несколько экранов
источник