

cakephp2.xでシェルプログラム「app/Console/Command/TestShell.php」を作りました。

シェル自体は動くのですがPHPUnit（初心者です）のテストコードをブラウザから起動すると白画面となり、error.logには以下エラーが出ています。

[code]

    Error: Fatal Error (1): Class 'AppShell' not found in
    Error: [FatalErrorException] Class 'AppShell' not found
    
[/code]

PHPUnitのsetUp()の中はネットから調べてよくわからないまま書いているのでそれが原因かもしれませんが、何かわかりましたらお願い致します。

■Shellプログラム  
app/Console/Command/TestShell.php

[code]

    App::uses('ComponentCollection', 'Controller');
    App::uses('TestCommonComponent', 'Controller/Component');
    class TestShell extends AppShell {
        public $uses = array(
            'TestModel1',
            'TestModel2'
       );
       public function startup() {
           parent::startup();
       }
    
        public function main() {
    
[/code]

■PHPUnit  
app/Test/Case/Console/Command/TestShellTest.php

[code]

    <?php
    App::uses('ConsoleOutput', 'Console');
    App::uses('ShellDispatcher', 'Console');
    App::uses('Shell', 'Console');
    App::uses('Folder', 'Utility');
    App::uses('TestShell', 'Console/Command');
    
    class TestShellTest extends CakeTestCase {
        public $target;
        public function setUp() {
            parent::setUp();
    
            $output = $this->getMock('ConsoleOutput', array(), array(), '', false);
            $error = $this->getMock('ConsoleOutput', array(), array(), '', false);
            $in = $this->getMock('ConsoleInput', array(), array(), '', false);
            $this->target = new TestShell($output, $error, $in);
            $this->target->initialize();
        }
    
        public function tearDown() {
            parent::tearDown();
        }
    
        public function testCommon(){
    //ここにテストを書く
            $this->assertEquals(0, 0);
        }
    }
    
[/code]


CC BY-SA 3.0
2018-04-13T09:22:17.883
43210
2019-11-05T07:02:20.260
15167
question
php cakephp phpunit
cake2.x シェルをPHPUnitでテストする時に「Error: Fatal Error (1): Class 'AppShell' not found in」が出る


シェル側にApp::uses('AppShell', 'Console/Command');を追加してPHPUnitも動くようになりました。


CC BY-SA 3.0
2018-04-13T10:05:44.463
43211
2018-04-13T10:05:44.463
15167
43210
answer