2016-08-30 6 views
0

これらのテストケースにURLを訪問し、正しい動作を確認していますが、ビュー内のヘルパー機能でエラーが発生するため動作しません。laravelでヘルパー関数を使用してテストビューをユニット化する方法

ブラウザでは動作しますが、テストでは動作しません。

/** @test */ 
    public function setUp() 
    { 
     parent::setUp(); 

    } 

    /** @test **/ 
    public function openAdminDashboardUnauthorized() 
    {  
     $crawler = $this->client->request('GET', 'admin/organizations'); 
     $this->assertTrue($this->client->getResponse()->isOk()); 

    } 

    /** @test **/ 
    public function tearDown() 
    { 
     parent::tearDown();    
    } 

HERESにエラー

enter image description here

マイヘルパークラスを経由してクラスローダ にglobal.phpにロードされている 、これはlaravelにあるEDIT 4.2

更新

人々は、ユニットテストのためにヘルパー関数をモックする必要があると言います。しかし、私の場合はヘルパー関数がビューにあり、セットアップ関数から静的メッセージをダンプしてテストしましたが、実際にはテスト実行中にロードされませんでした。

答えて

0

ここで私は働いています。

は今、私はglobal.phpでロードするクラス間の違いを知って

"autoload": { 
     "classmap": [ 
      "app/commands", 
      "app/controllers", 
      "app/models", 
      "app/database/migrations", 
      "app/database/seeds", 
      "app/tests/TestCase.php" 
     ], 
     "files": [ 
      "app/helper/Helper.php" 
     ] 
    } 

をcomposer.jsonの自動ロードサブツリーに

を私のヘルパークラスをロードし、迅速な「作曲ダンプ-自動ロード」を実行し、作曲家によってオートロードされる。もし誰かがlaravelがアプリケーションを起動する順番についてもっと説明できるなら、私は受け入れます。

+0

Laravelのリクエストサイクルについては、https://laravel.com/docs/4.2/lifecycleをご覧ください。 – Samundra

0

Mockeryを使用すると、デフォルトでlaravel4.2があります。 https://laravel.com/docs/4.2/testing をご覧ください。このようなものが上部に表示されているはずです。

use Mockery as m; 

class ClassToTest 
{ 
    public function test_some_method() 
    { 
     // Mock view helper 
     $viewHelperMock = m::mock(ViewHelper::class); 

     // Set expectations 
     $viewHelperMock->shouldReceive('show'); 
     ... 

     // This must be done only after setting the expectations 
     $this->app->instance(ViewHelper::class, $viewHelperMock); 

     ... 
     // Your assertions goes here 
     } 
} 

我々はLaravelのDIコンテナに私たち自身のviewHelperMockインスタンスを結合しています。したがって、ViewHelperクラスのリクエストが行われると、私たちのモックインスタンスに解決されます。したがって、ビューヘルパーで呼び出されるすべてのメソッドの期待値を設定できるようになりました。

あなたのビュー(HTML)コードを表示すると、より簡単にガイドすることができます。うんざりしないでください、最初は厄介で混乱します。ですから、複数回試してみると、Laravel's IOC containerの仕組みを見てください。

問題が発生した場合は、お知らせください。