47

非常に難しい質問ですが、Codeception で独自のデバッグ メッセージをコンソールに出力する方法はありますか? アサーションとは関係なく、純粋にテスト自体をデバッグするためのメッセージを意味します (たとえばvar_dump()、通常の PHP Web サイトの変数のように) 。

私はすでに試しましたがvar_dump()、役に立ちませんでした。を使用しても必要な結果は得られません。 xdebugのようなデバッガーを実行しなくても、変数の内容を表示できるようにしたいだけです。echoprintWebDebugmakeAResponseDump()

4

9 に答える 9

70

言うデバッグを参照してください

codecept_debug 関数を使用して、テスト内の情報を出力できます。

そして、私は*Ceptクラスでそれを使用しています:

codecept_debug($myVar);

デバッグ出力は、 --debug を指定して実行した場合にのみ表示されます (-v では表示されませんが、-vv と -vvv では表示されます)。

codecept run --debug

出力は次のようになりました。

Validate MyEntity table insert (MyCept) 
Scenario:
* I persist entity "AppBundle\Entity\MyEntity"

  AppBundle\Entity\MyEntity Object
  (
      [Id:AppBundle\Entity\MyEntity:private] => 1
      [Description:AppBundle\Entity\MyEntity:private] => Description
  )

 PASSED 
于 2015-05-26T22:40:48.650 に答える
54
\Codeception\Util\Debug::debug($this->em);die();

フラグを付けて Codeception を実行し--debugます。

于 2014-09-09T16:00:39.560 に答える
10

ヘルパー クラスを使用して、問題を回避する方法を見つけたようです。

class WebHelper extends \Codeception\Module
{
    public function seeMyVar($var){
        $this->debug($var);
    }
}

クラスを次のように呼び出します。

$foo = array('one','two');
$I->seeMyVar($foo);

次に、探しているデバッグ出力を取得します

I see my var "lambda function"
  Array
  (
      [0] => one
      [1] => two
  )

これを一時的な解決策として受け入れますが、アサーションをクリーンに保ち、テスト機能にアップグレードされた var_dumps で混乱させないようにしたいので、概念的に正しい解決策がある場合は送信してください

于 2014-02-19T07:34:41.753 に答える
7

または、次のような詳細制御コマンドを使用できます。

codecept run -vvv

ここで、それぞれvが出力の冗長性を高めます (デフォルトでは非常に静かです)。

于 2015-05-22T17:53:18.283 に答える
1

デフォルトでは、Codeception はエラーがあったと表示しますが、詳細は表示しません。ただし、このブログ投稿によると、 --debug を追加するとエラーが詳細に表示されます。

codecept run --debug

于 2014-09-08T10:20:04.527 に答える
1

短く、素晴らしく、簡単な方法

間違いなくオプションcodecept_debug付き--debugは正しい方法の1つです。

しかし--debug、ただ 1 つの変数の値を確認するのに常に必要ではないかもしれない多くの冗長性を示しています。また、変数に到達するために、CLI で多くのスクロールが必要になる場合があります。

ただし、もう 1 つ短くて簡単な方法があります。

assertSame変数を表示/var_dumpするためにtrueまたはランダムなもので変数をアサートします

$mango中身を見る必要があり、それが真実ではない、または「ランダムなもの」であると確信しているとしましょう

$I->assertTrue($mango)
$I->assertSame($mango, 'something random') // I am pretty sure $mango does not equals to 'something random'

上記のステートメントはエラー出力をスローしますが$mango、最良の部分は一番下に出力されるため、スクロールする必要がなく、冗長性もありません。--debugまた、この方法では、CLI コマンドを追加する必要はありません

制限:

PHP の 10 のデータ型のうち

Four scalar types:


bool
int
float (floating-point number, aka double)
string


Four compound types:

array
object
callable
iterable


And finally two special types:

resource
NULL

私の方法の上では、6でのみうまく機能します:

Four scalar types:

bool
int
float (floating-point number, aka double)
string


One compound types:

array


And finally one special types:

NULL

の値はうまく印刷されませんobjectresource

于 2021-01-09T20:55:17.947 に答える