2016-08-03 13 views
0

次のユニットテストがあり、クラスから返されたオブジェクトを設定するためにMOQを使用しています。私はmock.Objectを参照しようとすると、しかし、それは私がThroughfareNumberIdentifier IlluSiteInformationないでなければなりませんメソッドからオブジェクトを返すMoq

var throughFareIdentifer = new ThoroughfareNumberIdentifier(); 

var throughfareMock = new Mock<ILLUSiteInformation>(); 
throughfareMock.Setup(x => x.GetThroughfareNumber("15")).Returns(throughFareIdentifer); 


var siteInformation = _lluSiteInformation.GetSiteDetails("", "", "", "", "", "", "", "", throughfareMock.Object); 

throughfareMock.Objectを返すようにしようとしていないタイプのインターフェイスタイプを参照しています。

これで任意のヘルプは

おかげ

クリス

+0

を使用したい場合は、

throughfareMock.Setup(x => x.GetThroughfareNumber(It.IsAny<string>)).Returns(throughFareIdentifer); 

を呼び出すと、[MCVE]あなたと実際と期待される動作を提供してください。これはあなたの問題を解決するのに役立ちます。ありがとう。 – Nkosi

答えて

1

をいただければ幸いあなたがすることを告げ何をしています。 new Mock<ILLUSiteInformation>();を作成すると、「ILLUSiteInformationのモックを教えてください。

あなたのセットアップを使用する場合:あなたは「GetThroughfareNumberthroughFareIdentifierを返す、と呼ばれ、文字列として数15を渡されると、」言っている

throughfareMock.Setup(x => x.GetThroughfareNumber("15")).Returns(throughFareIdentifer); 

。代わりにモックオブジェクトを使用しての

コールthroughfareMock.Object.GetThroughfareNumber()、(それはあなたが設定したものだから)そう

_lluSiteInformation.GetSiteDetails("", "", "", "", "", "", "", "", throughfareMock.Object.GetThroughfareNumber("15"); 

ようにあなたが唯一の文字列として数15を使用していることを確認してください。あなたが任意の文字列を使用する場合は、int型

throughfareMock.Setup(x => x.GetThroughfareNumber(It.IsAny<int>)).Returns(throughFareIdentifer); 
+0

ありがとう。私はthroughfareMock.Object.GetThroughfareNumber()を使用する場合、イベントを設定する必要はありますか?ありがとう – chrisblue13

+0

それはあなた次第です。これは 'throughfareMock'オブジェクトの使い方と、それを使ってやることを計画しているものによって異なります。一般的に私がMockを使うとき、私は 'Mock.Object'をオブジェクトのコンストラクタに渡し、インタフェースを使用します。そこでは、インタフェースのメソッドを使用します。あなたと同じように。私は一般に、テストコードでMockedオブジェクトのメソッドを呼び出さない。お返事ありがとうございます – Brandon

+0

ありがとうございます。私は少し混乱して申し訳ありません。私は、コンストラクターでthroughfareMock.Object.GetThroughfareNumber( "15")を使用しています。私が他の例題で発見したように、なぜメソッドから戻り値の型を得るためにセットアップを行うのですか?メソッド呼び出しの中でメソッドを呼び出さないようにしたい。ありがとう – chrisblue13

関連する問題