2011-11-10 14 views
1

したがって、IAdapterインスタンスを取得するビューモデルがありますか?ビューモデルでプロパティを設定すると、そのIAdapterでいくつかのメソッドが呼び出されます。これは私が簡単にmoq &とすることができます。ここにテストメソッドがあります。ここでインターフェイスとプライベートメソッドでテスト可能なコードを除外する

[TestMethod] 
public void Setting_ExchangePrice_Calls_UpdateExcahngeCosts() 
{ 
    var currentItem = new InventoryItem(); 
    bool adapterUpdateExchangeCostsWasCalled = false; 
    adapterMock.Setup(x => x.CurrentItem).Returns(currentItem); 
    adapterMock.Setup(x => x.UpdateExchangeCosts()).Callback(() => adapterUpdateExchangeCostsWasCalled = true); 
    vm.Adapter = adapterMock.Object; 
    vm.ExchangePrice = 4; 
    Assert.IsTrue(adapterUpdateExchangeCostsWasCalled); 
} 

が問題である、UpdateExchangeCosts())(UpdateExchangePricesを呼び出す必要がある - そこにないことを意味し、それは公にする理由がないので、彼らは両方のアダプタの具体的な例に住んでいますインタフェースでそれを定義する理由は、インタフェースにプライベートメソッドを定義しないためです。 Sooooo .....私は、UpdateExchangeCosts()を呼び出してもUpdateExchangePricesを呼び出すことをテストする方法について悩んでいますか?私は状態ベースのテストを想像することができますが、多くの場合、UpdateExchangePricesは(何らかの理由で)何も更新しないので、変更された状態はテストされません。

ありがとう、素敵な一日を!

答えて

1

UpdateExchangeCostsUpdateExchangePricesと呼び出す必要がある場合は、特定のAdapterクラスをテストするときにテストする必要があります。 vmが何であるかをテストするとき、与えられたものについて気にする必要はありません(そして気にする必要はありません)Adapter

+0

はい!そうですね、答えを見てすぐに電球が点灯しました。どうもありがとう。どちらの答えも正しいです。それは明らかに私はうんざりに巻き込まれ、それは私の脳をクリックしませんでした。 – Kenn

関連する問題