如何模拟模型中使用的组件

时间:2019-02-06 15:39:01

标签: cakephp phpunit

我正在Cakecake应用程序上建立测试框架,并且遇到了一些问题。

我想测试用户模型,但是问题是用户模型使用了组件。是的,我知道在模型中使用组件是不好的做法。

这是一个简单的组件,可以从缓存或数据库中查找输入的翻译。

我不想为每个需要翻译的文本更新一个固定装置,所以我只想在组件中模拟翻译方法以返回其第一个参数。

我以前从未使用过phpunit(或任何php测试框架),所以请使用ELI5。

我正在遵循https://book.cakephp.org/2.0/en/development/testing.html文档中的CakePhp(2.x)测试教程。

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() {...}
}

0 个答案:

没有答案