2017-08-23 3 views
1

に宣言モッキング:Rhinoのモック:読み取り専用のプロパティは、私がCSHARPプロジェクトで、次のインタフェースとクラスを持つインタフェース

namespace FakeLib 
{ 
    public class Child : IChild 
    { 
    public DbConnection Connection { get; } 
    } 

    public interface IChild 
    { 
    DbConnection Connection { get; } 
    } 
    public class Parent 
    { 
    public IChild item { get; set; } 
    public string Run() 
    { 
     return item.Connection.Database; 
    } 
    } 
} 

だから私は、次のunittestのメソッドを作成しました:

[TestMethod] 
public void TestMethod1() 
{ 
    var repository = new MockRepository(); 
    var stub = repository.Stub<FakeLib.IChild>(); 
    stub.Stub(x => x.Connection).Return(new SqlConnection()); 
    var pai = new FakeLib.Parent() { item = stub }; 
    var conn = stub.Connection; 
    Assert.IsNotNull(conn); 
} 

私が知る限り、例外を起こさずに動作するはずです。しかし、実際には、 "Connection"プロパティはRhino Mocksによってスタブされるべき宣言されたSqlConnectionを返すことはありません。誰が私が逃したのか分かっていますか?

このコードの交換:解決済みこの1

var stub = Rhino.Mocks.MockRepository.GenerateStub<FakeLib.IChild>(); 

var repository = new MockRepository(); 
var stub = repository.Stub<FakeLib.IChild>(); 

+0

テストに失敗した理由は何ですか? –

+0

申し訳ありませんが私の質問が十分ではなかった場合、あなたの助けに感謝します。 問題は、プロパティ "Connection"のGetメソッドがRhino Mocksによってスタブされていないことです。したがって、最初にNullReferenceExceptionが発生します。テストをデバッグしてウォッチリストでプロパティを評価しようとすると、get_Connectionが実装されていないという例外が発生します。しかし、私はRhino Mocksのドキュメントをチェックしており、正確にこれを行うように指示しています。 stub.Stub(x => x.Connection).Return(new SqlConnection()); もう一度ありがとうございます! – ibirite

答えて

1

異なるアプローチの多くを試した後、私は最終的に、この奇妙な問題の原因を見つけました問題。この場合、読み込み専用のプロパティを除いて、スタブが正常に動作していたので変です。 Rhinoは異なる目的のために異なるがあいまいなsintaxを使用しているようだ。 ご協力いただきありがとうございます

関連する問題