Пуля — дура. Пых — молодец.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 26 Май, 2012, 12:06:27

Страниц: [1]
Печать
Автор Тема: phpUnit & mock objects  (Прочитано 210 раз)
0 Пользователей и 1 Гость смотрят эту тему.
AlexanderC    ↓ 
27 Январь, 2012, 09:11:05
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 140
Сила слова: 0.71

Может кто-то обьяснить суть этого + буду признателен если поделится best practice'ами на эту тему.
Записан

*Не всё  Windows™ что виснет, не всё  Linux что "да ну его..."
AlexanderC    ↓ 
27 Январь, 2012, 09:22:57 , спустя 11 минут 52 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 140
Сила слова: 0.71

+BDD Behat
Спустя 2 минуты 9 секунд добавил
и что вы думаете про http://codeception.com/
Записан

*Не всё  Windows™ что виснет, не всё  Linux что "да ну его..."
vasa_c    ↓ 
27 Январь, 2012, 09:57:10 , спустя 34 минуты 13 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

чего конкретно суть?
Записан

davert    ↓ 
28 Январь, 2012, 04:54:52 , спустя 6 часов 57 минут 42 секунды
НЕ ХУЕТА! ХУЕТА!

Карма: 2
Сообщений: 4
Сила слова: 50

Оки, я так посмотрел, вы меня тут упомянули, а я вот взял, и появился )
 
Суть моков в юнит-тестировании в том, что при тестировании кода важно знать какая часть его работает, какая нет. А значит нужно классы и методы тестировать в изоляции. Моки и стабы существуют в том же пыхюните, как раз для того, чтобы эмулировать эту изоляцию. При тестировании метода, мы тестируем конкретно один метод, а если он что-то дополнительно вызывает, всё это мы заменяем на заглушки.
 
Суть BDD: если у вас есть потребность описывать спецификации сайта, то очень просто превратить их в тест посредством BDD и бихет. Описание поведения на человеческом языке с целью показать заказчику это то, зачем оно всё нужно. Если же вы не хотите писать Войну и Мир о своем сайте. Если вы просто хотите быстро написать тесты - Codeception как раз для вас. Плюс в нем есть, как и юниты, так и приемочные, так и функциональные.
Записан
Sinkler    ↓ 
28 Январь, 2012, 04:58:33 , спустя 3 минуты 41 секунду
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 73
Сообщений: 6808
Сила слова: 1.07

круто, спасибо
Записан

AlexanderC    ↓ 
28 Январь, 2012, 01:34:41 , спустя 8 часов 36 минут 8 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 140
Сила слова: 0.71

ок, вот ток как быть с приват методами? В пыюните бывает чтё желаемый результат может быть достигнут через анальное отверстие... есть может бест практисы?
Спустя 1 минуту 25 секунд добавил
Codeception- однозначно понравился, потому как удобно очень..
Записан

*Не всё  Windows™ что виснет, не всё  Linux что "да ну его..."
davert    ↓ 
28 Январь, 2012, 04:18:25 , спустя 2 часа 43 минуты 44 секунды
НЕ ХУЕТА! ХУЕТА!

Карма: 2
Сообщений: 4
Сила слова: 50

Приватные методы исходя из бест практисов сами по себе тестироваться не должны. Объясню: важно тестировать не просто каждый метод, а те методы, с которыми может происходить внешнее взаимодействие. То есть класс стабильный, когда все публичные методы его протестирвоаны. Как он там действует внутри себя - всем пофиг. Он может менять приватные методы, свойства. Главное, что апи его методов (контракты) остаются стабильными.
 
Если же речь идет о том как "замокать" класс с приватным методом, то скорее всего никак. Лучше делать протектед-методы.
Да, со статическими методами - тоже фигня. Их мокать тоже не получится.
Записан
kostyl    ↓ 
28 Январь, 2012, 04:31:24 , спустя 12 минут 59 секунд
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3526
Сила слова: 1.7

Если же речь идет о том как "замокать" класс с приватным методом, то скорее всего никак
Можно мокать "обратными рефлекторами"
Записан

качество жизни обратно пропорционально количеству лени
AlexanderC    ↓ 
28 Январь, 2012, 04:40:19 , спустя 8 минут 55 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 1
Сообщений: 140
Сила слова: 0.71

"обратными рефлекторами" +1
Спустя 1 минуту 29 секунд добавил
но иногда я не понимаю зачем вообще мокать то что работает с внешними хренями, типо дб или апи... если правельно разделять части приложения- можно и без моков, тем более что у них проблемы с гетерами и сетерами... хз
Спустя 48 секунд добавил
  ***...то что !работает....
Записан

*Не всё  Windows™ что виснет, не всё  Linux что "да ну его..."
davert    ↓ 
28 Январь, 2012, 10:49:50 , спустя 6 часов 9 минут 31 секунду
НЕ ХУЕТА! ХУЕТА!

Карма: 2
Сообщений: 4
Сила слова: 50

Можно мокать "обратными рефлекторами"
А можно уточнить что имеется ввиду? А то рефлексией можно только доступ к методу получить, а вот доопределить его, наверное, никак.
Записан
kostyl    ↓ 
28 Январь, 2012, 11:08:16 , спустя 18 минут 26 секунд
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3526
Сила слова: 1.7

davert, честно говоря я не разбирался, но вроде runkit может сделать что надо
Спустя 2 минуты 20 секунд добавил
runkit_method_redefine но это экспериментальный
Спустя 2 минуты 20 секунд добавил
davert, а вообще, вы правы, скрытые части нужно тестить только согласно политике, а не всякий раз...
Записан

качество жизни обратно пропорционально количеству лени
davert    ↓ 
29 Январь, 2012, 12:31:06 , спустя 1 час 22 минуты 50 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 2
Сообщений: 4
Сила слова: 50

Ну runkit может всё, факт )
 
Но я пока делаю то, что предлагает сам РНР без надстроек. Но насчет Runkit, спасибо. Возможно внедрю его поддержку в Codeception )
Записан
Страниц: [1]
Печать
 

Перейти в:  

Этот топик скрыли: artoodetoo