2017-02-27 24 views
0

メソッドが正しい引数(オブジェクトの場合)で呼び出されたかどうかをテストするPHPspecテストを作成します。phpspec - 特定の引数(オブジェクト)でメソッドが呼び出されたかどうかを確認します。

私は私の仕様内で、この(擬似コード)のようなものをやっている:

function it_some_test(MyService $myservice) { 
    $object = new MyDomainObject(); 
    $object->setPropertyX("some value") 

    $myservice->getSomething($object)->shouldBeCalled(); 

}

オブジェクトは、私のサービス内で作成されたばかりDTOです。元のサービスと全く同じように作成されました。一部のプロパティの値は、同じロジックに基づいて変更されます。私がテストしたいものです。

問題は、私のテストは、$オブジェクトがそれ以外のものと異なっているが、正確に同じプロパティ値を持っているためです。

どのようにPHPspecはオブジェクトを比較しますか?引数:: any()を渡すと動作しますが、特定の値を持つプロパティとして渡されたオブジェクトをテストする必要があります。

+0

この回答を参考にしてください:http://stackoverflow.com/questions/42307939/how-to-get-property-from-stub-function-argument しかし、値がすべて同じであればオブジェクトの実装とその使用法を同じクラスに保つことが推奨されていなくても、それは成功するはずです – DonCallisto

答えて

0

問題が見つかりました。テスト中の実際のメソッドを呼び出す前に、メソッド - > shouldBeCalled()を呼び出していました。注文を変更すると、今すぐ動作します。

関連する問題