
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

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

da horsie
09.03.2017
20:35:01

Sergey
09.03.2017
20:35:34


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
ну вообщ логика в конструкторе (кроме валидации и такого прочего) это антипаттерн