CakePHP - проверка модульного тестирования не вызывается - PullRequest
1 голос
/ 13 мая 2011

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

Вот что у меня в приборе.

<?php
    class ItemFixture extends CakeTestFixture {
    var $name = 'Item';
    var $import = array(
            'model' => 'Item',
            'table' => 'items'
    );

    var $records = array(array(
            'id' => 1,
            'title' => 'Title2',
            'year' => '1992'
            ),array(
            'id' => 2,
            'title' => 'Lorem ipsum dolor sit amet',
            'year' => '1995'
            ));
    }

?>

Вот то, что у меня есть в модели модульного теста

    <?php

    App::import('Model', 'Item');

    class ItemTest extends Item {
            var $name = 'ItemTest';
            var $useTable = 'items';
            var $useDbConfig = 'test';
    }

    class ItemTestCase extends CakeTestCase {
            var $fixtures = array('app.item');

            function startTest() {
                    $this->ItemTest =& ClassRegistry::init('ItemTest');
            }

            function testAdd() {
                    $data = array(
                    'ItemTest' => array(
                    'title' => 'Best article Evar!'
                    )
                    );

                    $result = $this->ItemTest->saveAll($data);
            }

            function endTest() {

    }

}

?>

А вот подтверждение, которое я имею в действительной модели.

    'year' => array(
            'numeric' => array(
            'rule' => 'numeric',
            'allowEmpty' => false,
            'message' => 'Numbers only'
    ),
    'minLength' => array(
            'rule' => array('minLength', 4),
            'message' => 'Year in YYYY format'
    ),
    'maxLength' => array(
            'rule' => array('maxLength', 4),
            'message' => 'Year in YYYY format'
    )

Видите, в testAdd я не прохожу год, который не должен быть пустым, но он фактически прошел Почему не вызывается проверка?

Спасибо,

Ти

1 Ответ

2 голосов
/ 14 мая 2011

allowEmpty работает, только если данные содержат указанное поле, в вашем случае year. Чтобы провалить проверку, вам нужно либо добавить 'year' => '' к вашему массиву $data в testAdd, либо добавить 'required' => true к правилу проверки, чтобы обеспечить наличие в данных поля year.

См. Также http://book.cakephp.org/view/1148/allowEmpty

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