Я устанавливаю среду тестирования в приложении 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() {...}
}