Итак, я решил исследовать использование швов в PHPUnit, но я столкнулся с проблемой
Я переставил свой класс таким образом, чтобы сломать зависимости для класса базы данных
db_Class::getMyData($vars);
стал
self::getMyData($vars);
и я добавил функции в свой код
protected static function getMyData($vars) {
return db_Class::getMyData($vars);
}
Это было сделано, чтобы я мог создать класс, который наследует этот класс и перегружает функцию getMyData. Чтобы иметь возможность изменить его, когда я запускаю свои тесты.
Например, в классе шва, который расширяет класс выше и перегружает эту функцию:
protected static function getMyData($vars) {
return array('id'=>1, 'name'=>"My Name");
}
Это было бы очень полезно, так как я могу изменять данные так, как мне нравится. Однако при использовании PHPUnit у вас есть возможность запускать макеты, используя $ this-> getMock и т.п. Смогу ли я когда-нибудь достичь этого в классе шва.
Я пытаюсь найти решение, в котором я не использую инжектор зависимостей, который был бы моей альтернативой, совсем не плохой, просто хочу оценить обе альтернативы.
Майкл С. Перья выразил шов следующим образом:
A seam is a place where you can alter behavior in your program without editing in that place.
Так что я не могу получить полную картину, и я уже некоторое время пытаюсь ее получить, и я просто не могу обдумать это. Пожалуйста, прокомментируйте, если у вас есть идеи или вопросы.
То, о чем я прошу, - это простой способ работы с издевательствами в различных сценариях. Я не всегда хочу возвращать одно и то же значение в шве, иногда я хочу вернуть null, чтобы получить ошибку, иногда массив с правильными данными, а иногда, возможно, что-то еще.
Спасибо