2016-09-19 8 views
0

プラグイン(Assetsプラグイン)のコントローラのテストを書いています。CakePHP 3:コントローラのテスト

これはコントローラです:

namespace Assets\Controller; 

use Cake\Controller\Controller; 

class AssetsController extends Controller 
{ 
    public function asset($filename, $type) 
    { 
     $this->response->type($type); 
     $this->response->file(ASSETS . DS . $filename); 

     return $this->response; 
    } 
} 

あなたが見ることができるように、それが唯一のアセットファイルを送信します。

この

はルートです:

Router::plugin('Assets', ['path' => '/assets'], function ($routes) { 
    $routes->connect(
     '/:type/:filename', 
     ['controller' => 'Assets', 'action' => 'asset'], 
     [ 
      'type' => '(css|js)', 
      'filename' => '[a-z0-9]+\.(css|js)', 
      'pass' => ['filename', 'type'], 
     ] 
    ); 
}); 

そして、これはテストクラスである:ただし、この例外が生成され

namespace Assets\Test\TestCase\Controller; 

use Assets\Utility\AssetsCreator; 
use Cake\TestSuite\IntegrationTestCase; 

class AssetsControllerTest extends IntegrationTestCase 
{  
    public function testAsset() 
    { 
     //This is the filename 
     $filename = sprintf('%s.%s', AssetsCreator::css('test'), 'css'); 

     $this->get(sprintf('/assets/css/%s', $filename)); 

     $this->assertResponseOk(); 
    } 
} 

テストを実行する(完全なテストhere):

1) Assets\Test\TestCase\Controller\AssetsControllerTest::testAsset 
Cake\Routing\Exception\MissingControllerException: Controller class could not be found. in /home/mirko/Libs/Plugins/Assets/vendor/cakephp/cakephp/src/Http/ControllerFactory.php:91 

私は壊れているという問題はないと思います。そのようにして同じ例外が生成されるためです:

$url = \Cake\Routing\Router::url([ 
    'controller' => 'Assets', 
    'action' => 'asset', 
    'plugin' => 'Assets', 
    'type' => 'css', 
    'filename' => $filename, 
]); 

$this->get($url); 

どこが間違っていますか?ありがとう。

+0

これはどのバージョンのケーキですか? – systematical

+0

@systematical、version 3.3.3 –

+0

「Cake \ Controller \ Controller」が見つかりません...なぜですか? –

答えて

1

解決済み!私のテストのブートストラップでは、私は逃した:

DispatcherFactory::add('Routing'); 
DispatcherFactory::add('ControllerFactory'); 

今それは動作します。

関連する問題