2011-10-21 24 views
3

そこにはMoqの連鎖可能な実装がありますか?既存のがあるかどうMoqの連鎖可能な実装

var mockSchedule = 
    new Mock<Schedule>(). 
     .SetupGetWith(x => x.Date,new DateTime(2011,6,1)) 
     .SetupGetWith(x => x.Label,"Schedule A"); 

私はこれらを自分で書くことができますが:

var mockSchedule = 
    new Mock<Schedule>() 
     .Which().SetupGet(x => x.Date).Returns(new DateTime(2011,6,1)) 
     .Which().SetupGet(x => x.Label).Returns("Schedule A"); 

かのように:

var mockSchedule = new Mock<Schedule>(); 
mockSchedule.SetupGet(x => x.Date).Returns(new DateTime(2011,6,1)); 
mockSchedule.SetupGet(x => x.Label).Returns("Schedule A"); 

私はこのようにそれを呼び出すことができます。私はこの代わりにすることを考えていました実装私はむしろホイールを再発明したくない

答えて

4

並べ替えの; Moq v4の機能仕様があります。

var foo = Mock.Of<IFoo>(f => 
    f.Id == 1 && 
    f.Who == "me" && 
    f.GetBar(It.IsAny<string>()) == Mock.Of<IBar>(
     b => b.Name == "Fred")); 

ドキュメントが改善される場合があります。私はshort writeup on my blogを持っています。 Old style imperative mocks vs moq functional specificationsおよびthis Moq Discussions threadも参照してください。

+0

ニース。構文は非常に直感的ではないようですが、間違いなく改善です。私はクイックスタートでそれを見ませんでした。 CallBaseとDefaultValueはどうやって設定しますか? – Jonn

+0

'Mock.Get(foo).CallBase();'を使うか、古い構文を使わなければならないと思います。詳しくは上記のディスカッションスレッドのリンクを参照してください。そしてはい、現在のところ、これはクイックスタートにはありません。 – TrueWill

関連する問題