[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Доступность методов класса в новом объекте
Страницы: 1, 2
SlavaFr
Цитата (Guest @ 5.07.2016 - 19:48)
Мокает всё, включая нативные php функции.

Спасобо за ссылочку. Там вроде не написано, про нативные функции, но то, чтро он делает мок статических методов это круто, так как PHPUnit это не может.
С Codeception и selenium тестами приходилось работать, но из за сложности библиотеки я перешел на ПХПюнит с дреиверами от behad для функтиональных тестов.


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
SlavaFr
Цитата (chee @ 5.07.2016 - 18:16)
Через наследованияе. К примеру, есть тип, наследуешь, изменяешь метод, получаешь тот же тип, а потом через композицию можешь подставить его в рантайме с помощью фабрик и контейнеров.


Тип просто переносится в интерфейс. Безусловно нужен рефакторинг.
К примеру у тебя был класс А и Б

class A
{
public function a() {return 'a';}
}


class B extends A
{
public function b() {return $this->a().'b';}
}



Ты выносиш А в интерфейс и таким образом передаёшь в будующем как параметр не не класс, а интерфейс как тип. Рефакторинг выглядит таким образом:

interface A {
/**
*
@return string
*/

public function a();
}
class Aimpl implements A
{
public function a() {return 'a';}
}


class B implements A
{
/**
*
@var A
*/

private $aInst;

public function __construct(A $a) { $this->aInst = $a; }
public function a() {return $this->aInst->a();}
public function b() {return $this->a().'b';}
}


$a = new Aimpl;
$b = new B($a);
echo $b->b(). PHP_EOL;

// или даже так
echo (new B($b))->b();

То есть и тип имеется и парент А можно заменять любыми имплементациями, и эти имплементации мугут тестироваться отдельно.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.