0

PHPUnitを使用して10月のCMSプラグインのカスタムルートのテストを作成しようとしていますが、テストを正しく実行するためにいくつかのエラーが発生しています。October CMS PHPUnitルートテスト

各テストは個別に実行されますが、グループとして実行すると、最初のテストは合格し、残りは500エラーで失敗します。

in Resolver.php line 44 
at HandleExceptions->handleError('8', 'Undefined index: myThemeName', 
'/Users/me/src/myProject/vendor/october/rain/src/Halcyon/Datasource/ 
Resolver.php', '44', array('name' => 'myThemeName')) in Resolver.php line 
44 

テストケースは次のようになります:失敗のテストのためのエラーメッセージがある

class RoutesTest extends PluginTestCase 
{ 
    protected $baseUrl = "/"; 

    public function setUp() { 
    parent::setUp(); 
    DB::beginTransaction(); 
} 

    public function tearDown() 
    { 
    DB::rollBack(); 
    parent::tearDown(); 
    } 

    public function testRootPath() 
    { 
    $response = $this->call('GET', '/'); 
    $this->assertEquals(200, $response->status()); 
    } 

    public function testIntroPath() 
    { 
    $response = $this->call('GET', '/intro'); 
    $this->assertEquals(200, $response->status()); 
    } 

    etc... 
} 
+0

あなたが持っている 'use'ステートメントを共有できますか?私は 'Illuminate \ Foundation \ Testing \ TestCase;を使うようには思えません。' use \ PHPUnit_Framework_TestCase;を見ました。 – icedwater

答えて

0

私たちはcurlを使って実際のリクエストを行い、それから応答コードを得ることになった。

protected function getResponseCode($url) { 
    $ch = curl_init($this->baseUrl.$url); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT,10); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_exec($ch); 
    return curl_getinfo($ch, CURLINFO_HTTP_CODE); 
} 

public function testRootPath() 
{ 
    $this->assertEquals(200, $this->getResponseCode('/')); 
} 

ここで、すべてのテストは、分離されたプロセスを使用せずに行われます。

0

私は理由を知りませんが、あなたはphpunitコールにフラグ--process-isolationを追加した場合に動作し、私はおそらくキャッシュの問題だと思う。

+0

これはテストをパスしますが、実際に問題を解決するよりも多くの回避策のようです。 – mindlis

+0

:)幸運にも、何が起きているのかを発見しようと1年はたっていますが... – OsDev

0

残念ながら解決策はありません。ちょうど異なる角度です。私は10月の "テスト"設定(config/testing/cms.php)と関係があると思います。 ディレクトリ "tests/fixtures/themes/pages /"にあるファイルを探します。そこにあるindex.htmファイルには、url-parameterが '/'として設定されています。 だから、phpunitはそれを見つけるでしょうが、他のURLは見つけられません。 私はその問題へのserveral提案したソリューションを見てきましたが、それらのどれも私のために働いていない:

  1. の使用「コンフィグ::設定( 『cms.activeTheme』、 『myTheme』);」テストを実行する前に(BASE_PATH」から "themesPathLocal" を変更設定/試験/ cms.phpで
  2. に "BASE_PATH( 'プラグイン')" "BASE_PATH( 'テスト/器具/プラグイン')" から "pluginsPathLocal" を変更
  3. config/testing/cms.phpの "base_path( 'themes')"に変更

私のテーマの1つを訪問する方法を理解することができたら、人生はずっと簡単でしょう。ページを正しい方法で........

関連する問題