in Профессиональное

Как тестировать Model Layer в Lime (Symfony)

По умолчанию Lime не умеет тестировать модель. Выражается это в ошибках типа

[PropelException]
No connection params set for propel
 
При этом предполагем что у нас написан примерно такой тест:

 
<?php
 
include(dirname(__FILE__).’/../bootstrap/unit.php’);
require_once($sf_symfony_lib_dir.’/util/sfCore.class.php’);
sfCore::initSimpleAutoload(sfConfig::get(’sf_root_dir’).’/lib’);
 
$t = new lime_test(7, new lime_output_color());
 
SomeModelPeer::retrieveByPk(1);
 
Решается проблема например установкой плагина sfModelTestPlugin. Однако он сразу у меня не заработал, поэтому пришлось его модифицироватьв соответствии с рекомендациями в ветке форума:http://www.symfony-project.org/forum/index.php/t/7550/ в файл plugins/sfModelTestPlugin/bootstrap/model-unit.php внес такуюинициализацию базы:
 
sfCore::bootstrap($sf_symfony_lib_dir, $sf_symfony_data_dir);
sfContext::getInstance();
Propel::setConfiguration(sfPropelDatabase::getConfiguration());
Propel::initialize();
 
а “родную” соответственно закомментировал:
 
//$databaseManager = new sfDatabaseManager();
//$databaseManager->initialize();
 
После этого каркас теста выглядит примерно так:
 
<?php
/**
* Тест модели []
*
* @author Dmitry Bykadorov <@gmail.com>
*
*/
 
// Используем sfModelTestPlugin
define(’SF_APP’, ‘frontend’);
include(sfConfig::get(’sf_root_dir’).’/plugins/sfModelTestPlugin/bootstrap/model-unit.php’);
 
// Автозагрузка классов
require_once($sf_symfony_lib_dir.’/util/sfCore.class.php’);
sfCore::initSimpleAutoload(sfConfig::get(’sf_root_dir’).’/lib’);
 
// Инициализация Lime
$testInstance = new lime_test(1, new lime_output_color());

Write a Comment

Comment

*