2016-09-01 5 views
1

私の模擬されたオブジェクトが "獲得"されたと主張する方法はありますか?私のようなものだろう、私のユニットテストでモックオブジェクトが「取得済み」であることを確認するにはどうすればよいですか?

public class Car 
{ 
    private readonly IValidationDict _validationDict; 
    public Car(IValidationDict validationDict) 
    { 
     _validationDict = validationDict; 
    } 

    public void Go() 
    { 
     var myValidation = _validationDict; //I would like to assert that _validationDict was indeed assigned to another variable or "gotten" 
    } 
} 

var mock = new Mock<IValidationDict>(); 
var sut = new Car(IValidationDict.Object); 

を私の嘲笑オブジェクトは「得」していることを主張する方法はありますか?

+0

残りのメソッドでは 'myValidation'はどうなりますか?おそらく、それはあなたがそれを主張することができるように、モックのいくつかのメンバーを呼び出すでしょう。 – Lee

+0

@Leeはそれは古典的なユニットテストではなく、何か別のものに依存するでしょうか? –

+0

私はあなたが何を意味するのかは分からないが、「実行する」ことは無効メソッドであるため、その副作用に対してのみ実行しているからだ。あなたはあなたのテストでモックを提供しているので、あなたはあなたが提供するモックへの期待を通してそのエフェクトを主張しています。 'Go'メソッド内でどのように起こるかの詳細は、テストとは無関係であるべきです。 – Lee

答えて

2

いいえ、あなたのモックオブジェクトが割り当ての一部として使用されたことを確認する方法はありません。 myValidationの割り当てはMoqフレームワークの範囲外で行われるため、Moqはそれをトラッキングするための傍受はできません。

@Lee状態として、myValidationが別の場所で使用され、その変数(模擬インスタンスになる)の使用を確認できるという前提があります。

1つの代替あなたのモックがアクセスされた場合は、あなた検証辞書を取得するためのメソッドを持つファクトリクラス(GetValidationのようなもの)を作成し、あなたのCarに嘲笑工場を渡し、そのことを確認することです知っている必要がある場合GetValidationメソッドが工場で呼び出されました。

関連する問題