Как я могу импортировать свои приборы внутри модели? - PullRequest
0 голосов
/ 02 апреля 2019

Я недавно начал писать модульные тесты (я следую учебному пособию по кулинарной книге cakephp) на каком-то старом коде и столкнулся с проблемой.

Модель импортирует другую модель с App::import('Model', 'Model2') и new Model2() или ClassRegistry::init('Model2'). Я сделал прибор для обеих моделей, но Model2 по-прежнему использует модель по умолчанию.

Может кто-нибудь дать мне несколько советов о том, как с этим бороться?

Я искал в Интернете некоторые примеры, но, очевидно, cakephp2 почти не используется, не говоря уже о phpunit.

Модель

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

class Credit extends AppModel {

  public function transfer_credits($from_comp, $from_user, $to_comp, $to_user, $credits) {
    App::import('Model', 'CreditTransfer');
    $CreditTransfer = ClassRegistry::init('CreditTransfer');
    $CreditTransfer->save($data);
  }

}

Тест

class CreditTest extends CakeTestCase {

  public $fixures = array('app.credit','app.credit_transfer');

  public function setUp() {
    parent::setUp();

    $this->Credit = ClassRegistry::init('Credit');
    $this->Credit->useDbConfig = 'test';
    $this->CreditTransfer = ClassRegistry::init('CreditTransfer');
    $this->CreditTransfer->useDbConfig = 'test';
  }

  public function testTransferCreditsValid() {
    $credit_tranfers_before = $this->CreditTransfer->find('count');
    $result = $this->Credit->transfer_credits(1, 1, 2, 2, 5);
    $credit_tranfers_after = $this->CreditTransfer->find('count');

    $this->assertEqual($credit_tranfers_before + 1, $credit_tranfers_after);
  }

}

Итак, в заключение: Model1 импорт Model2. Model2 идет в реальную базу данных вместо использования фикстуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...