2016-09-22 5 views
1

私はTagModelを返す単一のメソッドで単純なファクトリクラスをテストしています。メソッドによって構築されたオブジェクトに渡されるパラメータの順序をテストする方法

class TagFactory 
{ 
    public function buildFromArray(array $tagData) 
    { 
     return new TagModel(
      $tagData['t_id'], 
      $tagData['t_promotion_id'], 
      $tagData['t_type_id'], 
      $tagData['t_value'] 
     ); 
    } 
} 

私はメソッドをテストすることができます...

public function testbuildFromArray() 
{ 
    $tagData = [ 
     't_id' => 1, 
     't_promotion_id' => 2, 
     't_type_id' => 3, 
     't_value' => 'You are valued', 
    ];  

    $tagFactory = new TagFactory(); 
    $result = $tagFactory->buildFromArray($tagData); 
    $this->assertInstanceOf(TagModel::class, $result); 
} 

私はnew TagModel…にパラメータの順序を変更した場合、テストはまだ合格します。私はprophesize場合

TagModel ...

$tagModel = $this->prophesize(TagModel::class); 
    $tagModel->willBeConstructedWith(
     [ 
      $tagData['t_id'], 
      $tagData['t_promotion_id'], 
      $tagData['t_type_id'], 
      $tagData['t_value'] 
     ] 
    ); 

は...しかし、私は、何を主張すべきですか?彼らがそうでないので assertSameは機能しません。

TagModelのゲッターを使って注文をテストすることができましたが、このユニットだけでテストしました。しかし、もし私がそれらを変えても、テストはまだ通り抜けなければならないので、注文はテストすべきだと思う。

答えて

1

テストする方法は工場です。オブジェクトを作成します。予想されるタイプのものではないことを確認する場合は、その状態を確認する必要があります。 getterでそれを調べるか、受け取ることを期待しているオブジェクトを作成し、それを比較するためにassertEquals()を使用します。

+0

ありがとう、私はこのテストが基本的にTagModelテストとなり、パラメータが正しい順序で渡されることをテストすることを意味しています。 – deadlyhifi

関連する問題