2TDD infected

HraKK

Мудак
Команда форума
2TDD infected

Сабж, у кого-то будет немного времени чтоб меня немного поучить-проконсультировать?
Оплата в WMZ.
 

HraKK

Мудак
Команда форума
не я издам книгу и буду ее прадавать, гг
 

atv

Новичок
HraKK, не стесняйся, задавай вопросы, ответим. А ещё лучше на agiledev.ru
 

HraKK

Мудак
Команда форума
да все отлично, только вопросов много и мне придется много ждать ответа пока кто-то "мимо" пройдет, а время деньги.

Ну вот первый сходу - как можно протестировать Front Controller?)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
лучше здесь - многим интересно будет почитать

если флейм все не испортит, впрочем
 

HraKK

Мудак
Команда форума
Можно и тут, но надо чтоб подошли zerkms, whirlwind etc :)
 

atv

Новичок
Давай сразу с примерами кода. Что ты хочешь протестировать из Front Controller, или ты ещё не знаешь что хочешь тестировать и т.д.
 

HraKK

Мудак
Команда форума
Откуда я возьму пример кода, когда я написал - TDD?

-~{}~ 26.01.10 20:59:

Следуйщий пример, есть класс хранилище, у него есть 2 внешний метода - геттер и сеттер.
Как их протестировать отдельно друг от друга?
 

atv

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

Как их протестировать отдельно друг от друга?
А зачем их тестировать отдельно? Они всегда работают в паре и составляют единый интерфейс класса, который, в данном случае, гласит, что установив значение сеттером, можете получить это значение геттером. Вот и тестируешь это поведение.
 

fixxxer

К.О.
Партнер клуба
нифига не инфектед, но:

>> как можно протестировать Front Controller?

mocks, vfsStream

>>есть класс хранилище, у него есть 2 внешний метода - геттер и сеттер.
>>Как их протестировать отдельно друг от друга?

а зачем? если геттер+сеттер в паре работают ожидаемо, какая разница, что там внутри происходит?
 

HraKK

Мудак
Команда форума
Но интерфейс то класса у тебя должен же быть. Не реализация, а интерфейс.
Интерфейс у FC? как такового нету, но даже если и есть то - dispatch()
Что это даст?)

А зачем их тестировать отдельно? Они всегда работают в паре и составляют единый интерфейс класса, который, в данном случае, гласит, что установив значение сеттером, можете получить это значение геттером. Вот и тестируешь это поведение.
Не знаю, для меня логично что 2 различных действия тестируются 2 различными тестами. Давайте уже 1 тест делать на всесь аппликейшен, но же все равно делает одну вещь?


Непонятно с каких пор FC работает с FS?
 

AmdY

Пью пиво
Команда форума
посмотри как тесты реализованы в симфони
 

zerkms

TDD infected
Команда форума
ну с точки зрения функционала, что делает FC?

1. выгребает из переменных окружения (или ещё откуда) запрос
2. передаёт запрос роутеру (или какому другому компоненту) на разбор
3. по разобранным параметрам выполняет команду

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

HraKK

Мудак
Команда форума
хех, это то ясно, а вот как? ладно, завтра поэкспериментирую и выложу результаты, всем сноф!
 

zerkms

TDD infected
Команда форума
хехехе :)
ну вот у тебя и появляется задача по избавлению от лишних зависимостей :)
 

HraKK

Мудак
Команда форума
Не в зависимостях дело, избавление это старый пройденный путь, просто я пытаюсь идеологически построить тест так, что я не знаю функциональной реализации, а не вначале код потом тест. А вот это пока тяжело дается.

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

whirlwind

TDD infected, paranoid
HraKK ты путаешь незнание реализации и требований. Если на этом этапе ты не знаешь функциональных требований, значит ты перескочил этап проектирования. Тест - это функциональные требования в виде кода.
 

HraKK

Мудак
Команда форума
Требования от класса естественно есть. Ака Интерфейс, то есть то что я ему должен давать, что он должен делать и выдавать.

Сейчас вроде все получается, но пока точно не могу сказать так как чтоб его полноценно отестить мне надо описать всю его переферию, чем сейчас и занимаюсь. Завтра может выложу то что получилось, обплюете :)

Кстати никто не знает как заставить класс реагировать на next()?
 

whirlwind

TDD infected, paranoid
Автор оригинала: HraKK
чтоб его полноценно отестить мне надо описать всю его переферию
Ну это как раз и есть оно. Примерно так:

1. Модель требований: use cases + software requirements specification + glossary
2. Метамодель: диаграммы последовательностей + классы предметной области
3. Проектная модель: то же самое что метамодель + все служебные классы (базы, фабрики, етц) и диаграммы взаимодействия между ними
4. Реализация: разработка теста -> реализация класса
 
Сверху