2011-09-07 19 views
2

をモック私は、部品番号のための次のセットアップを持っている:テストメソッドを実行している場合MOQ - 辞書<文字列、ダブル>オブジェクト

... other code to setup bigMoq object ... 
var innerMoq = new Mock<IDictionary<string, double>>(); 
innerMoq.SetupGet(d => d["COMPLEX"]).Returns(6d); 
innerMoq.SetupGet(d => d["MEDIUM"]).Returns(8d); 
innerMoq.SetupGet(d => d["SIMPLE"]).Returns(10d); 
bigMoq.SetupGet(d => d.ComplexityWeights).Returns(x.Object); 

、私はarguementとしてbigMoqに渡します。

次作品:

bigMoqVar.ComplexityWeights["COMPLEX"] // correctly returns 6 

しかし、これにはない:

bigMoqVar.ComplexityWeights.ContainsKey("COMPLEX") // returns false instead of true 

innerMoq上にContainsKeyを支援するための推奨方法は何ですか?

+2

「Dictionary 」を使用してみませんか? – driis

答えて

6

これは、ContainsKeyの期待値を設定しなかったためです。手動で設定する必要があります.Moqはインターフェイスのセマンティクスについて知りません。これはあなたが必要なだけIDictionaryある場合

innerMoq.Setup(d => d.ContainsKey("COMPLEX")).Returns(true); 

しかし、なぜモックフレームワークを通過?必要なオブジェクトを持つDictionary<string,double>を作成してください。

+0

ありがとうございます。私はMoqを使うのに熱心でした。辞書を作成する代わりに完全に働いた。 – Shawn

関連する問題