2013-10-07 2 views
0

Я новичок в cakephp, и мне просто интересно, как тестировать модели и контроллеры без использования просмотров?Как имитировать запрос из представления.

Мне нужно моделировать сохранение данных с помощью моделей и контроллеров, не используя froms from views. Я думал о создании массива с необходимыми значениями, но, возможно, есть лучший способ сделать это?

ответ

0

Вы можете выводить переменные в любое время из контроллеров (или моделей), не попадая в представления. Да, это не то, как вы должны делать вещи с рамки MVC, но для тестирования, это довольно легко ударить это ниже вашего вызова базы данных в модели/контроллера:

<? echo '<pre>'; print_r($my_array); exit; ?> 

Другая вещь, которую вы можете сделать это на верхняя часть функции в контроллере положить:

$this->layout = ''; 
$this->render(false); 

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

1

вы можете издеваться ваши модели функций с помощью кода, как:

$model = $this->getMockForModel('MyModel', array('save')); 
$model->expects($this->once()) 
     ->method('save') 
     ->will($this->returnValue(true)); 
0

В начале своего действия, вы можете использовать:

$ this-> autoRender = ложь;

Это позволит вам получить доступ к вашим действиям непосредственно ходя на его путь (например, CONTROLLER/ACTION). Прежде чем передавать свой массив данных для сохранения() или saveAll(), я рекомендую дважды проверить его с помощью Debugger :: dump() и следовать за ним с помощью die(). Это приведет к тому, что массив, содержащий данные сохранения данных, будет отображаться на вашем экране, чтобы вы могли проверить его правильность и следовать правилам Cake. Функция die() предотвратит фактическое сохранение данных.

Если все выглядит правильно, удалите дамп() и die() и проверьте его снова.

Первый ответ от Ayo Akinyemi также должен хорошо работать, если вы являетесь подразделением, тестирующим ваше приложение.

Смежные вопросы