web-dev-qa-db-ja.com

Codeception-cestとceptの違いは何ですか?

TDDアプローチを使い始めたばかりで、コードセプションに出くわしました。

Webを頻繁に検索しましたが、コードセプションでcestファイルとceptファイルの適切な説明や区別が見つかりませんでした。

29
aBhijit

それらのフォーマットが唯一の違いです。

Ceptはシナリオベースの形式であり、Cestはクラスベースの形式です。

Ceptの例:

<?php    
$I = new AcceptanceTester($scenario);
$I->wantTo('log in as regular user');
$I->amOnPage('/login');
$I->fillField('Username','john');
$I->fillField('Password','secret');
$I->click('Login');
$I->see('Hello john');

巣箱の例:

<?php
class UserCest
{
    public function loginAsRegularUser(\AcceptanceTester $I) 
    {
        $I->wantTo('log in as regular user');
        $I->amOnPage('/login');
        $I->fillField('Username','john');
        $I->fillField('Password','secret');
        $I->click('Login');
        $I->see('Hello john');            
    }
}

非開発者はCept形式がよりフレンドリーで親しみやすいと感じるかもしれません。 PHP開発者はCest形式を好むかもしれません。これは、ファイルごとに複数のテストをサポートし、プライベート関数を追加することでコードを簡単に再利用できます。

結局、それは好みの問題であり、あなたはあなたが好むフォーマットを選ぶことができます。

55

次のような2つのテスト方法を備えたCestがある場合

<?php
class UserCest
{
    public function test1(\AcceptanceTester $I) 
    {
        $I->see('Hello john');            
    }

    public function test2(\AcceptanceTester $I) 
    {
        $I->see('Hello jeff');            
    }
}

これは、test1Cept.phpと同等です。

<?php
$I = new AcceptanceTester($scenario);
$I->see('Hello john');

test2Cept.php:

<?php
$I = new AcceptanceTester($scenario);
$I->see('Hello jeff');

テストコードを構造化するのは2つの異なる方法です

1
B4rb4ross4

私がCodeceptionの専門家であるというわけではありませんが、この説明が役立つかもしれません- http://codeception.com/docs/07-AdvancedUsage

0
Larry Borsato