ФорумПрограммированиеPHP для идиотов → phpUnit & mock objects

phpUnit & mock objects

  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 27 января 2012 г. 9:11

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

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 27 января 2012 г. 9:22, спустя 11 минут 52 секунды

    +BDD Behat
    Спустя 129 сек.
    и что вы думаете про http://codeception.com/
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 27 января 2012 г. 9:57, спустя 34 минуты 13 секунд

    чего конкретно суть?
  • davert

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 27 января 2012 г. 16:54, спустя 6 часов 57 минут 42 секунды

    Оки, я так посмотрел, вы меня тут упомянули, а я вот взял, и появился )

    Суть моков в юнит-тестировании в том, что при тестировании кода важно знать какая часть его работает, какая нет. А значит нужно классы и методы тестировать в изоляции. Моки и стабы существуют в том же пыхюните, как раз для того, чтобы эмулировать эту изоляцию. При тестировании метода, мы тестируем конкретно один метод, а если он что-то дополнительно вызывает, всё это мы заменяем на заглушки.

    Суть BDD: если у вас есть потребность описывать спецификации сайта, то очень просто превратить их в тест посредством BDD и бихет. Описание поведения на человеческом языке с целью показать заказчику это то, зачем оно всё нужно. Если же вы не хотите писать Войну и Мир о своем сайте. Если вы просто хотите быстро написать тесты - Codeception как раз для вас. Плюс в нем есть, как и юниты, так и приемочные, так и функциональные.
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 27 января 2012 г. 16:58, спустя 3 минуты 41 секунду

    круто, спасибо
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 28 января 2012 г. 1:34, спустя 8 часов 36 минут 8 секунд

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

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 28 января 2012 г. 4:18, спустя 2 часа 43 минуты 44 секунды

    Приватные методы исходя из бест практисов сами по себе тестироваться не должны. Объясню: важно тестировать не просто каждый метод, а те методы, с которыми может происходить внешнее взаимодействие. То есть класс стабильный, когда все публичные методы его протестирвоаны. Как он там действует внутри себя - всем пофиг. Он может менять приватные методы, свойства. Главное, что апи его методов (контракты) остаются стабильными.

    Если же речь идет о том как "замокать" класс с приватным методом, то скорее всего никак. Лучше делать протектед-методы.
    Да, со статическими методами - тоже фигня. Их мокать тоже не получится.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 28 января 2012 г. 4:31, спустя 12 минут 59 секунд

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

    Можно мокать "обратными рефлекторами"
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 28 января 2012 г. 4:40, спустя 8 минут 55 секунд

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

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 28 января 2012 г. 10:49, спустя 6 часов 9 минут 31 секунду

    Можно мокать "обратными рефлекторами"

    А можно уточнить что имеется ввиду? А то рефлексией можно только доступ к методу получить, а вот доопределить его, наверное, никак.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 28 января 2012 г. 11:08, спустя 18 минут 26 секунд

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

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 28 января 2012 г. 12:31, спустя 1 час 22 минуты 50 секунд

    Ну runkit может всё, факт )

    Но я пока делаю то, что предлагает сам РНР без надстроек. Но насчет Runkit, спасибо. Возможно внедрю его поддержку в Codeception )
  • Dimezis

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 18 августа 2012 г. 12:22, спустя 202 дня 22 часа 51 минуту

    так что этот вариант автоматически отметается )

Пожалуйста, авторизуйтесь, чтобы написать комментарий!