2011-12-30 5 views
0

は、次のインターフェイス...私はfakeiteasyでこのプロパティのget関数への呼び出しをスタブアウトしようとしていますどのようにプロパティを取得するために呼び出しをスタブしますか?

public interface MyInterface 
{ 
    bool MyProperty { get; } 
} 

を考えてみましょう。

[Test] 
public void Foo() 
{ 
    var fake = A.Fake<MyInterface>(); 
    var sut = new MySUT(fake); 
    A.CallTo(() => fake.MyProperty).Returns(true); 

    var result = sut.Foo(); 

    Assert.IsTrue(result); 
} 

システムアンダーテストのFoo()メソッドは、単にMyProperty getプロパティ呼び出しの値を返します。残念ながら、このテストは常に失敗します。デバッグすると、getプロパティは常にfalseを返すようです。

getプロパティ呼び出しの戻り値をスタブアウトするにはどうすればよいですか?

EDIT - (コメントで要求されるように)

public class MySUT 
{ 
    private readonly MyInterface _myInterface; 

    public MySUT(MyInterface myInterface) 
    { 
     _myInterface = myInterface; 
    } 

    public bool Foo() 
    { 
     return _myInterface.MyProperty; 
    } 
} 
+0

具体的なMySUTコンストラクタとMySut.Foo()はどのように実装されていますか? –

答えて

3

をMySUTクラスのコードを追加し、私は

var sut = new MySUT(fake); 

var sut = MySUT(fake); 

を変更し、それは私のテスト・ソリューションで働いていました。

私はFakeItEasy 1.7.4257.42とNUnitをテストに使用しました。メインのプロジェクトとテストプロジェクトは、2つの異なるアセンブリで分けられました。

+1

「新しい」の欠如は、私がSOのために質問を書いていたときに、実際はちょうどタイプミスでした。私の実際のコードはそれを見逃していませんでした。私の実際のコードはもう少し複雑だったので、それを含めて気にしなかった。 'new'キーワードを探すことで、実際に私の他の" relavant "コードが問題であることがわかりました。私はMySUTのコンストラクタで実行されていた 'MyInterface'のメソッドをいくつかスタブアウトしました。私は、コンストラクタコールの前にセットアップする必要があるときに、 'new MySUT()'の呼び出しの後に*これらの呼び出しをスタブしました。簡素化しようとするとすぐに役立ちます。 –

関連する問題