Symfony 1.4未加载sfTestFunctional失败,未找到类

时间:2012-08-16 14:24:21

标签: php symfony-1.4 functional-testing

我已完成功能测试,现在我想运行它们。但是,每次运行它们都会找不到sfTestFunctional类。

据我所知,functional.php引导程序不会从框架中自动加载类。这可能是什么原因?

这是我的功能性引导程序

// guess current application
if (!isset($app))
{
  $traces = debug_backtrace();
  $caller = $traces[0];

  $dirPieces = explode(DIRECTORY_SEPARATOR, dirname($caller['file']));
  $app = array_pop($dirPieces);
}

require_once dirname(__FILE__).'/../../config/ProjectConfiguration.class.php';
$configuration = ProjectConfiguration::getApplicationConfiguration($app, 'test', isset($debug) ? $debug : true);

sfContext::createInstance($configuration);


// remove all cache
sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir'));

$doctrine = new sfDoctrineDropDbTask($configuration->getEventDispatcher(), new sfAnsiColorFormatter());
$doctrine->run(array(), array("--no-confirmation","--env=test"));

$doctrine = new sfDoctrineBuildDbTask($configuration->getEventDispatcher(), new sfAnsiColorFormatter());
$doctrine->run(array(), array("--env=test"));

$doctrine = new sfDoctrineInsertSqlTask($configuration->getEventDispatcher(), new sfAnsiColorFormatter());
$doctrine->run(array(), array("--env=test"));

这就是我的功能测试

include(dirname(__FILE__).'/../../bootstrap/functional.php');

$browser = sfTestFunctional(new sfBrowser());
Doctrine_Core::loadData(sfConfig::get('sf_test_dir').'/fixtures/fixtures_initial.yml');

2 个答案:

答案 0 :(得分:1)

确定。因此,在将我的头撞在墙上后,我找到了解决方案。

由于某些原因,在测试环境中,自定义过滤器不会自动加载。解决方案是将所有自定义筛选器的require_once添加到ProjectConfiguration文件中。以下是我所做的例子:

if(sfConfig::get('sf_environment') == 'test' && sfConfig::get('sf_app') == 'frontend')
{
    require_once sfConfig::get('sf_app_lib_dir').'/myFilter.class.php';
    require_once sfConfig::get('sf_app_lib_dir').'/myotherFilter.class.php';
    require_once sfConfig::get('sf_app_lib_dir').'/lovefiltersFilter.php';
    require_once sfConfig::get('sf_app_lib_dir').'/eventsManagement.class.php';

    require_once sfConfig::get('sf_test_dir').'/ProdPadTestFunctional.class.php';
}

我还必须添加我的自定义testFuntional类。使用autoload.yml文件可能会更优雅。

答案 1 :(得分:0)

我发现了问题:

$browser = sfTestFunctional(new sfBrowser());

你应该写:

$browser = new sfTestFunctional(new sfBrowser());