2017-02-26 2 views
0
static ContainerBuilder BaseSetupForMoq(EmptyInterceptor testInterceptor = null) 
    { 

     var containerBuilder = new ContainerBuilder(); 

     { 

    var testrep= new MockHiber(); 

      containerBuilder.Register(c => testrep.SessionOpen()) 
       .As<ISession>() 
       .InstancePerRequest(); 
     } 

public ISession SessionOpen() 
    { 

     var session= new Mock<ISession>(); 
     session.Setup(x => x.Query<User>()).Returns(User); 
     return session.Object; 
    } 

コードの行モック方法 'session.Setupを(X => x.Query())を返します(ユーザ);'エラーを投げている 発現は嘲笑オブジェクトに属していないメソッドを参照します。x => x.Query()Nhibernate.ISessionクエリ<T>

私が研究し、そのようなクエリ<としてその拡張メソッドを見出したが>嘲笑とラッパーすることはできません使用すべきです。しかし、そのアプローチもdidn; tは、

私はここで助けることができれば本当に感謝します。

+0

質問は何ですか?どのような質問をしているのかは不明です。ステートメントは – Nkosi

+0

です。メソッドテストでは、私はisessionオブジェクトを返そうとしていますが、クエリは拡張メソッドなので、疑似オブジェクトに属していません:s => s.Query () " エラーを先に投げたコード行は 'testsession.Setup(x => x.Query () – TechRon

+0

だから、私はオンラインで見つけたいくつかの記事の指示に従ってヘルパークラスを書いた... そして、今度はコードの行が 'returns testsession.Object;'暗黙のうちに型 'ISessionLinq'を 'NHibernate.ISession'に変換することはできません。明示的な変換が存在します(キャストがありませんか?) – TechRon

答えて

0

あなたはISessionを返しますが、モックのタイプはMock<ISessionLinq>です。 ISessionLinqに変更すると正常に動作します。あなたはモック何

public ISessionLinq test() 

あなたがここにNHibernateのをからかっていない理解する必要がありますが、あなた自身のインタフェースISessionLinq

+0

No..問題はまだあります。実際のコード行はMockです。 testsession = new Mock (); – TechRon

+0

エラーはどの行ですか? –

+0

return testsession.Object; – TechRon

関連する問題