Size: a a a

2020 September 07

AW

Alex Wells in PHP
Vitaliy Kostetskiy
я накатываю структуру бд перед тестами
на этом этапе бд пустая
что мне делать дальше?
в тестах use DatabaseTransactions;
источник

AW

Alex Wells in PHP
и в каждом отдельном тесте создаешь нужные тебе энтити
источник

AW

Alex Wells in PHP
фабриками
источник

VK

Vitaliy Kostetskiy in PHP
Alex Wells
в тестах use DatabaseTransactions;
где то было написано что мы лару юзаем?
источник

AW

Alex Wells in PHP
Vitaliy Kostetskiy
где то было написано что мы лару юзаем?
привычка, сорри. Так или иначе, транзакции до и после запуска каждого теста (начало и ролбек)
источник

VK

Vitaliy Kostetskiy in PHP
Alex Wells
привычка, сорри. Так или иначе, транзакции до и после запуска каждого теста (начало и ролбек)
так, давай еще раз
я вижу ты хочешь помочь, это приятно

адекватно ли использваоть предподготовленный sql что бы тестировать методы выборки?
источник

AW

Alex Wells in PHP
Vitaliy Kostetskiy
так, давай еще раз
я вижу ты хочешь помочь, это приятно

адекватно ли использваоть предподготовленный sql что бы тестировать методы выборки?
предподготовленый sql который делает что?
источник

AW

Alex Wells in PHP
вообще, что бы он не делал, я не вижу причины использовать чистый sql в тестах
источник

AW

Alex Wells in PHP
что бы и как бы ты не тестировал, его там быть точно не должно
источник

VK

Vitaliy Kostetskiy in PHP
Alex Wells
предподготовленый sql который делает что?
создает бд таблички и вставляет по 20 строк необходимый для всех кейсов проверок
источник

AW

Alex Wells in PHP
Vitaliy Kostetskiy
создает бд таблички и вставляет по 20 строк необходимый для всех кейсов проверок
нет. Создавай - пожалуйста, перед началом всех тестов. 20 строк создавай в каждом отдельном тесте.
источник

VK

Vitaliy Kostetskiy in PHP
Alex Wells
вообще, что бы он не делал, я не вижу причины использовать чистый sql в тестах
т.е. единственное что может быть в sql это структура бд?
источник

AW

Alex Wells in PHP
Vitaliy Kostetskiy
т.е. единственное что может быть в sql это структура бд?
нет, могут быть и начальные данные (типа валют, стран или еще какой-то лабуды)
источник

AW

Alex Wells in PHP
но данных для конкретных тестов там быть не должно
источник

VK

Vitaliy Kostetskiy in PHP
Alex Wells
нет. Создавай - пожалуйста, перед началом всех тестов. 20 строк создавай в каждом отдельном тесте.
окей, накатываю дамп с полями перед каждым тестом
далее,например метод getEntityByID(12)
я получаю Entity
далее мне нужно проверить что выбрались адекватно поля
мне хардкодом писать в теле метода теста вещи типа
$this->assertEqual($entity->field, 'fieldValue') для каждого поля?
источник

VK

Vitaliy Kostetskiy in PHP
Alex Wells
но данных для конкретных тестов там быть не должно
окей, как мне протесстироввать выборку на пустой бд?
источник

AW

Alex Wells in PHP
Vitaliy Kostetskiy
окей, накатываю дамп с полями перед каждым тестом
далее,например метод getEntityByID(12)
я получаю Entity
далее мне нужно проверить что выбрались адекватно поля
мне хардкодом писать в теле метода теста вещи типа
$this->assertEqual($entity->field, 'fieldValue') для каждого поля?
нет, накатываешь дамп ты перед запуском вообще любых тестов, и.е. еще на этапе, когда проект поднимается.

В этом конкретном случае, создаешь эту энтити любым способом, смотришь ее айдишник, передаешь в метод и смотришь, что бы айдишка полученной энтити соответствовала той, которую ты передал в метод/создал
источник

AW

Alex Wells in PHP
Vitaliy Kostetskiy
окей, как мне протесстироввать выборку на пустой бд?
в тестах создавать энтити нужные, я же уже три раза сказал
источник

VK

Vitaliy Kostetskiy in PHP
Alex Wells
в тестах создавать энтити нужные, я же уже три раза сказал
для их создания мне необходим уже протестированный метод $repository->insert() верно?
источник

AW

Alex Wells in PHP
вот у тебя testGetEntityByIdReturnsEntityByItsId()

$entity = createEntity();
$fetchedEntity = (new Repository)->getEntityById($entity->id);

$this->assertSame($entity->id, $fetchedEntity->id)
источник