Codeception 1.1がリリースされました

PHPプロジェクトの自動テストのフレームワークCodeceptionは、最初のメジャーアップデートを取得しました。 下位互換性を壊さないように、コア全体をシャベルでシャベルし、すべてを壊し、すべてを修正しなければなりませんでした。 その結果、スクリプトだけでなく任意のPHPコードをテストで使用できるようになり、XPathを使用して要素を検索する機能が追加され、PHPUnitテストでCodeceptionモジュールを使用する機能も登場しました。



以前の記事のいずれかのコメントでハブロフスク在住のsqrtは、「テストスクリプトで使用できるようにヘルパーメソッドを呼び出すときに結果を返すことは可能ですか?」と尋ねました。



$token = $I->grabTextValueFrom('#token'); $I->fillField('token', $token);
      
      





以前は、これは機能しませんでしたが、新しいバージョンでは可能です。 特別なチーム- グラバーを追加しました。 それらはすべて接頭辞「grab」で始まり、ほとんどすべてのモジュールに含まれています。



そのため、ヘルパーを記述する頻度を減らす必要があり、ほとんどのタスクはテストですぐに実行できます。 また、テストで任意のPHPコードを作成できるようになりました。 これが必要な理由のように思えます-テストに明確な構造を持たせ、開発者に何かを書かせる必要はありません。 厳格なルールがない場合、テストは読みにくくなる可能性があります。 ただし、厳密なルールは残りますが、PHPを埋め込む機能により、フィクスチャの操作が簡単になります。



例:



 <?php if ($scenario->preload()) { require 'user_data.php' } $I = new TestGuy($scenario); $I->amLoggedAs($user1); $I->click('Log In'); $I->see("Hello, ".$user1->name); if ($scenario->running()) { $user1->delete(); } ?>
      
      





ユーザー$ user1はuser_data.phpからロードされ、テストの終了時に削除されました。

Codeceptionの以前、次の戦略が実践されていました。グループ内のすべてのテストで、すべてのデータが等しくロードされ、クリアされます。 現在、開発者はデータを扱う際の柔軟性が大幅に向上しています。



コードを挿入するときは、スクリプトの分析時またはすでにその実行中に、いつ実行すべきかを示す必要があることを明確にする必要があります。 実際には、このために、if($シナリオ->プリロード())およびif($シナリオ->実行中())ブロックが必要です。



改ざんの間接的な結果として、現在はPHPUnitテストでCodeceptionモジュールを使用できます 。 つまり 原則として、スクリプトを破棄して、すべての受け入れテストをPHPUnitで作成できます。 すべては次のようになります。



 public function testUserIsLoggedIn() { $user = User::find(1); $user->setPassword('qwerty'); $user->save(); $this->testGuy->amOnPage('/login'); $this->testGuy->submitForm('#login', array('username' => $user->name, 'password' => 'qwerty')); $this->testGuy->see('Hello, '.$user->name); }
      
      





しかし、個人的には、これらの機能を使用して統合テストを作成することをお勧めします。 データベースまたはORM Doctrineを操作するためのモジュールはそこで非常に便利です。



そして最後に、別の革新。 テストはXPathロケーターによって要素を見つけることができるようになりました。 同時に、既存のモジュールに新しいコマンドは導入されませんでした。 以前にCSSセレクターが使用されていた場合、XPathロケーターを使用できるようになりました。



それだけです。 ご清聴ありがとうございました。 それをテストしてください!

公式ブログのリリースの詳細。



All Articles