@oop_ru

Страница 146 из 785
Sergey
09.03.2017
11:08:33
более того

юнит тест описывает контракт

Evgeniy
09.03.2017
11:08:45
хорошо смотри

есть контракт

Google
Evgeniy
09.03.2017
11:08:57
есть разные реализации

например 2 штуки (А и Б)

со временем в проверку контракта добавилось еще одно правило

Sergey
09.03.2017
11:09:29
например 2 штуки (А и Б)
> как устранять дублирование - можно по разному. Можно тупо вынести в базовый класс, можно сделать отдельную тест сюиту которая проверяет контакт и прогонять каждый тест кейс на разных реализациях

Evgeniy
09.03.2017
11:09:42
и теперь надо вместо одного места править сразу 2

если реализации не 2 а больше

я хотел тест что то вроде принимание его аргументом

в виде зависимости и там проверка контракта

Aleh
09.03.2017
11:10:52
export const someContract = ConcreteImplFactory => { describe("Some contract", function () { it("does smth", function() { const impl = ConcreteImplFactory(); expect(impl).to.do.somthing(); }); } }

Evgeniy
09.03.2017
11:11:09
в случае с наследованием

если 1 объект реализует 2 контракта например ContainerInterface и Serizable

тут уже проблема так как наследоватся только от одного

Google
Sergey
09.03.2017
11:11:52
и теперь надо вместо одного места править сразу 2
public function testContainerThrowsExceptionInCaseOfEmptyContainer(ContainerInterface $implementation) { $implementation->doStuff(); } public function implementationProvider() { return [ new FooImplementation(), new BarImplementation(), ] }

как-то так

Evgeniy
09.03.2017
11:12:05
знаю что это плохо когда 1 объект 2 вещи имплементит

Sergey
09.03.2017
11:12:09
можно хоть на все тест кейсы один провайдер писать

Evgeniy
09.03.2017
11:12:33
такой вариант да

Sergey
09.03.2017
11:12:45
ну так в чем проблема?

Aleh
09.03.2017
11:12:48
export const someContract = ConcreteImplFactory => { describe("Some contract", function () { it("does smth", function() { const impl = ConcreteImplFactory(); expect(impl).to.do.somthing(); }); } }
и потом в спеке своей имплементации импортишь этот someContract и просто вызываешь

Evgeniy
09.03.2017
11:12:53
но хотелось бы чтобы данные из за пределов приходили

сейчас объясню

Sergey
09.03.2017
11:13:05
ай не не интересно)

Evgeniy
09.03.2017
11:13:14
например есть что то типо psr где делают свои интерфейсы

и сразу тесты, чтобы те кто имплементит их проходили эти тесты

в случае с провайдером это правка кода стандарта запихивание своего объекта

ну или Overwrite method

провайдера

Sergey
09.03.2017
11:14:28
и сразу тесты, чтобы те кто имплементит их проходили эти тесты
ты завязан на конкретную версию контракта

просто так она не поменяется

и все кто имплементят реализации узнают об этом и подправят свои тесты

Evgeniy
09.03.2017
11:15:07
просто когда много объектов реализующих 1 интерфейс типо storage

и везде дублировать одинаковый код

Google
Evgeniy
09.03.2017
11:15:28
что если нет данных вернуть null или exception

дублировать одну и туже вставку

простую выборку и тд

и так в каждой реализации

Storage\Mysql, Storage\File, Storage\Redis, Storage\Memcached, Storage\MongaDB, etc

хотелось бы код вынести куда то

и подключать его внутри юнит теста

и потом в unit тесте останется протестить только что то специфичное

но меня как обычно никто не понимает и это нафиг не надо)

Sergey
09.03.2017
11:36:53
хотелось бы код вынести куда то
ну так кто тебе мешает)

?
09.03.2017
17:44:29
https://www.youtube.com/watch?v=iom_xzSmPsM

Альберт
09.03.2017
17:51:02
?? спасибо.

Sergey
09.03.2017
20:31:13
нуууу... такое

https://www.youtube.com/watch?v=S-RjiMAxHio&list=PLmqFxxywkatStbd9hdzVOS1hZa9dc56k4

вот это пополезнее

Ринат
09.03.2017
20:32:53
адаптироано на пхп?

Sergey
09.03.2017
20:33:15
адаптироано на пхп?
представь что перед переменными значки долларов

Admin
ERROR: S client not available

Ринат
09.03.2017
20:33:26
ок))

спасибо, поглядим

Google
Sergey
09.03.2017
20:35:34
...и это perl ;)
грань тонка)

Denis
10.03.2017
09:03:41
Всем привет! Есть ОТРЫТАЯ ВАКАНСИЯ: от 150 000 р. 89639619512 Денис Мы используем следующий стек технологий: ClickHouse — храним все метаданные, основная база с ценной информацией для BigData вычислений Percona Server (MySQL) — для справочников, прокинутых в ClickHouse, где пароли пользователей, другие перс. Данные и настройки системы PHP 7 — основной язык программирования всей бизнесс логики Фреймворки на PHP: Symfony 3, Silex, AnagularJS с LazyLoad, m3u8 и другими вкусностями (webpack, gulp, bulk.... Система контроля версий: Git Вся работа в системе контроля версий ведется по Git Flow Для деплоя используем Deployer как для php так и для разворачивания новых нод на физических серверах На текущий момент около 20-ти серверов обеспечивают облако обработки и хранения данных, за 2 месяца планируется нарастить до 120-ти. Все серверы обьеденены в PrivateCloud В основе бекенда используется микросервисная архитектура с полным REST-API между сервисами и он же (REST-API) используется для выдачи данных в морду. Методология разработки: SCRUM С какими блоками работать придется: Backend: Развитие бизнесс-логики для хранения и распределения данных в Private Cloud, работа на стыке низкого уровня работы ОС Linux с отдельным ПО. Разработка сервисов логики обработки и аналитики данных для распределения по API и базе данных. Передача и организация данных внутри архитектуры. Все пишется на Silex Backend: Бизнесс-логика работы системы вцелом основного API, которое коммуницирует с API сервисов и распределяет задачи. Работа с выдачей данных в морду. Логика сбора данных с разных источников и их анализ. Все пишется на Symfony 3. Frontend: Разработка основного интерфейса системы. Все работа ведется на Anagular JS.

Roman ?
10.03.2017
09:04:50
проплачено

Aleh
10.03.2017
09:04:52
а может вакансии в другом чатике

@f3ath

da horsie
10.03.2017
09:05:54
я ее уберу через сутки

обещаю

я понимаю боль человека и обещал помочь

Sergey
10.03.2017
09:07:21
я понимаю боль человека и обещал помочь
только чатик совсем не тот

Aleh
10.03.2017
09:07:30
https://telegram.me/javascript_jobs

и оттуда аналогичные jobs

da horsie
10.03.2017
09:08:05
чуваки, я все понимаю. это на сутки. все почистим, будет как было.

Evgeniy
10.03.2017
09:15:24
ого давайте лучше говорить что они все неправильное юзаеют

а надо вот так:

и каждый выскажит как надо было делать, вместо rest api, будем rpc, вместо deployer пусть будет ansible, puppet, chef и другой срач)

Andrey
10.03.2017
09:17:14
это удалёнка или какой город?

Denis
10.03.2017
09:17:35
это удалёнка или какой город?
если вопрос по моей вакансии

если вопрос по моей вакансии
можно обсуждать любые варианты

da horsie
10.03.2017
09:17:59
пишите автору в личку, пожалуйста

Google
Hell
10.03.2017
09:27:16
Толстый констурктор контоллера в вебе - это антипаттерн?

который без парамтров

da horsie
10.03.2017
09:28:31
ну вообщ логика в конструкторе (кроме валидации и такого прочего) это антипаттерн

Страница 146 из 785