Как смоделировать компонент, используемый в модели - PullRequest
0 голосов
/ 06 февраля 2019

Я устанавливаю среду тестирования в приложении CakePHP и сталкиваюсь с некоторыми проблемами.

Я хочу протестировать модель User, но проблема в том, что в модели User используется компонент.Да, я знаю, что использование компонента внутри модели - плохая практика.

Это простой компонент, который находит перевод ввода из кеша или базы данных.

Я не хочу обновлять фикстуру для каждого фрагмента текста, который должен бытьпереведен, поэтому я просто хочу смоделировать метод перевода в компоненте, чтобы вернуть его первый аргумент.

Я никогда раньше не использовал phpunit (или какую-либо среду тестирования php), поэтому, пожалуйста, ELI5.

IЯ следую учебному пособию по тестированию CakePhp (2.x) из документации: https://book.cakephp.org/2.0/en/development/testing.html.

UserTest

App::uses('User', 'Model');

class UserTest extends CakeTestCase {
    public function setUp() {
        parent::setUp();
        $this->User = ClassRegistry::init('User');
    }
}

Пользователь

App::uses('Model', 'Model');
App::uses('TranslatorComponent', 'Controller/Component');

class User extends AppModel {
    function __construct() {
        parent::__construct();
        $this->validate = array(
            'firstname' => array(
                'notempty' => array(
                    'message' => TranslatorComponent::Tr('First name is required')
...

TranslatorComponent

App::uses('Component', 'Controller');
App::uses('AppController', 'Controller');

class TranslatorComponent extends Component {
    public static function Tr($token = null) {...}
    public static function get_default_language() {...}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...