
Sergey
23.12.2016
12:58:07
хз мне как-то неудобен спек

Sergey
23.12.2016
12:58:17
нельзя статику тестить?)

Sergey
23.12.2016
12:58:32
сам подход уебанский какой-то)

Sergey
23.12.2016
12:58:54
я за 3 года что спек юзаю раза 2 так думал

Google

Sergey
23.12.2016
12:59:23
сейчас чуть подуспокоился и снова получаю удовольствие, а "уебанство подходов" удавалось списывать на то что я пишу говно

Sergey
23.12.2016
12:59:37
https://github.com/fesor/shop-example/blob/master/spec/Model/Catalog/ProductBuilderSpec.php о чем этот тест вообще непонятно к примеру

Sergey
23.12.2016
12:59:53
ну то етсь... тупо спеку сгенерили но ничего в ней не написали

Sergey
23.12.2016
13:00:21
https://github.com/fesor/shop-example/blob/master/spec/Model/Order/OrderLineSpec.php
ну или вот, откуда взялся $this->price();?
$this->beConstructedWith(
CatalogFakeData::randomProductWithPrice(10), 10
);
что тут произойдет?

Sergey
23.12.2016
13:00:40
$this - это тестируемый объект

Sergey
23.12.2016
13:00:48
омг

Sergey
23.12.2016
13:01:00
ты описываешь спеку этого самого $this
что мол $this->price() должен вернуть такую-то фигню

Sergey
23.12.2016
13:01:14
у тебя в перемешку идут методы фреймворка и того что ты тестишь?

Sergey
23.12.2016
13:01:38
эм.... не совсем. Я на митинг, минут через 30-40 похоливарим)

Mihail
23.12.2016
13:08:34
а у нас сегодня пьянка)

Google

Mihail
23.12.2016
13:08:40
йохохо
)

Sergey
23.12.2016
13:22:25
ты можешь пока накидывать

Sergey
23.12.2016
13:25:21
давай наоборот, убеди меня что это удобно)
и что пхпюнит неудобно

Sergey
23.12.2016
13:27:25
давай сначала определимся. Если ты пишешь сначала код а потом тесты, то phpspec ненужен
а если ты tdd делаешь или делаешь хотя бы какой-то процент времени
то phpspec уже становится удобным

Sergey
23.12.2016
13:28:18
эм, что мне мешает генерить код из пхпюнита?

Sergey
23.12.2016
13:28:29
ну.... то что он этого не умеет?
ну то есть в теории можно запилить но тяжко

Sergey
23.12.2016
13:28:52
пхпшторм умеет ведь
или что именно он неумеет?

Aleh
23.12.2016
13:29:18
пхпспек ж няшненько с тайпхинтами и все такое
и автомоки по тайпхинту
уняня

Sergey
23.12.2016
13:29:31
шта?

Sergey
23.12.2016
13:29:39
шта?)

Sergey
23.12.2016
13:29:48
как по мне пхпспек это хрень которая не поддерживается в пхпшторме)

Aleh
23.12.2016
13:29:52

Google

Aleh
23.12.2016
13:29:53
сам
и автоматически тестдаблы по тайпхинтам делает
это ж прикольно)

Sergey
23.12.2016
13:30:48
пример?

Sergey
23.12.2016
13:31:01
$this->callFunction($string, $int);
и оно тебе сгенерит
public function callFunction(string $string, int $int)
{
}

Aleh
23.12.2016
13:31:55
it_asdasd_asd(User $user) { // $user тут уже тестдабл
$this->blahblah($user) ... // получишь blahblah с type hint
}

Sergey
23.12.2016
13:32:31
ок, пишу
$myObj->callFunction($string, $int);
жмакаю Add Method и мне создается метод)

Aleh
23.12.2016
13:33:14
ну с тестдаблами так не выйдет

Sergey
23.12.2016
13:33:40

Aleh
23.12.2016
13:35:09
описывает какой-нибудь emailsender
it_should_send_email(User $user, Mailer $mailer) {
$mailer->send()->shouldBeCalled(...);
$this->sendTo($user);
}
получаешь метод sendTo загенеренный
пример так себе
просто что в голову пришло)

Sergey
23.12.2016
13:36:35
юзер приходит моком?

Aleh
23.12.2016
13:37:35
да
и Mailer

Sergey
23.12.2016
13:38:59
пока сложно представить зачем нужны моки в том что приходит в метод

Google

Sergey
23.12.2016
13:39:02
разве что дабл диспатч
https://github.com/Enleur/todoapp/blob/master/src/AppBundle/Tests/Service/TodoServiceTest.php вот типичный тест в пхп юнит
более читабельный же

Sergey
23.12.2016
13:39:34
окей

Sergey
23.12.2016
13:40:28
при желании можно вместо обычных
$this->taskRepository->expects($this->once())
->method('getTask')
->with($listId, $taskId)
->willReturn($task);
юзать prophet
из phpspec, он уже в пакете с пхпюнит идет бонусом

Sergey
23.12.2016
13:42:39
а теперь коронка
phpspec не позволи тебе много плохого сделать

Admin
ERROR: S client not available

Sergey
23.12.2016
13:42:59
например?

Sergey
23.12.2016
13:43:05
он очень жестко тебя ограничивает в том, какой код ты можешь тестить
любое говно становится дико неудобно тестировать
и ты очень быстро начинаешь понимать что пишешь говно

Sergey
23.12.2016
13:43:24
ну у меня с этим проблем как-то не было
хочешь - пиши интеграционные
хочешь юнит

Sergey
23.12.2016
13:43:34
в phpunit же ты можешь "обманывать" себя сколько захочешь
и делать так как тебе удобно

Sergey
23.12.2016
13:43:39
хочешь вообще танцуй

Google

Sergey
23.12.2016
13:43:49
ну пхпюнит же не только для юнит тестов расчитан

Sergey
23.12.2016
13:43:52
я говорю только о юнит тестах

Sergey
23.12.2016
13:43:53
так что головой думать надо)

Sergey
23.12.2016
13:43:54
какие интеграционные
о чем ты?

Sergey
23.12.2016
13:43:58
а интеграционные ты пишешь?

Sergey
23.12.2016
13:44:06

Sergey
23.12.2016
13:44:17
у меня нет джунов
да и не было проблем с джунами
если я могу писать только на phpunit и не париться?)

Sergey
23.12.2016
13:44:46
я вот еще думаю как выкинуть phpunit вообще
у меня сейчас он юзается только для проверки репозиториев
и все

Steven
23.12.2016
13:46:36
О чем они вообще...

Sergey
23.12.2016
13:47:01
ну в общем не убедили
не вижу причин чем пхпспек лучше)
и да о джунах
приходит джун, дается ему книга по TDD, в которой xUnit рассматривается
он садится и начинает писать тесты