3

ほとんどすべての phpUnit アサートは 3 つのパラメーターです。

  1. 期待される結果
  2. 実価
  3. 失敗時に出力するオプションのメッセージ

( などの一部にassertTrue()は、暗黙の予期される結果があるため、2 つのパラメーターのみを指定します。)

しかし、期待される結果がそれほどきれいでない場合はどうすればよいでしょうか? オプションのパラメータである場合もあれば、テストする値が複数ある場合もあります。1 つの具体的な例として、assertTimestamp($expected_time,$actual_time,$tolerance=0,$msg='')クロックの多少のずれを許容できる許容範囲を考えてみます。(また、データベースで作成されたタイムスタンプをテストし、レコードが過去 30 秒間に、つまり現在の単体テスト実行の前の関数によって作成されたことを確認するためにも使用します。)

それは合理的に見えますか?$msgつまり、常に最後までプッシュし、2 番目のパラメーターとしてactualを保持します。assertTagにはisHTMLフラグがあり、 の後に最後に来$msgます。

より複雑な例として、$actualパラメーターに json 文字列を受け取る関数があります。を実行json_decodeし、いくつかの値を抽出して、それぞれをチェックします。現在、次のようなものがあります。

function assertJsonPersonFromDBResponse($name,$gender,$age,$actual,$expectSomething=false,$msg='')

別の方法で行いますか?予想されるすべてのパラメーター (オプションのフラグを含む) を最初のパラメーター (連想配列) に絞り込む方がよいかどうか疑問に思っています。

function assertJsonPersonFromDBResponse($expected,$actual,$msg='')
...
$this->assertJsonPersonFromDBResponse(array('name'=>'Darren','age'=>21,
    'gender'=>'M','expectSomething'=>true),$s);

そのほうが清々しい感じです。しかし、この種の状況に対する既存の規則はありますか?

4

1 に答える 1