2012-03-05 10 views
0

MoqでIHTMLSelectElementを使用しようとしています。私のコードは次のようなものされています。そして、私の量産コード方式では、私がMoq - オブジェクト型のキャストと比較

// create a select element 
var selectElem = new Mock<IHTMLSelectElement>(MockBehavior.Strict); 
// set the select element 
selectElem.Setup(f => f.length).Returns(20); 
selectElem.Setup(f => f.name).Returns("selectElem");    
// get the object 
IHTMLSelectElement ihse = selectElem.Object; 

の操作を行います。部品番号を使用した場合のタイプが実際にあるので

var selectEle = (element as mshtml.IHTMLSelectElement); 
if (selectEle != null) 
{ 

は私の問題は、型キャストが動作しないということです。 Castle.Proxies.IHTMLSelectElementProxy_1

これをIHTMLSelectElementにキャストすると、nullオブジェクトが返されます。

どのように私はこの作品を作ることができますか?

+1

あなたのインターフェイスタイプの模倣されたオブジェクトは、あなたのコードが間違いなく動作するはずです。 –

+0

しかし、 'IHTMLSelectElementProxy_1'は' IHTMLSelectElementProxy'を継承しています。 'IHTMLSelectElement ihse = selectElem.Object;'を実行することができます。それでキャストはあなたの問題ではないと私は思います。 –

+0

生産クラスに 'ihse'モックが注入されているコードを表示できますか? –

答えて

1

コードに応じて、メソッドへのプロパティまたは入力パラメータのいずれかを注入可能にする必要があります。そして、あなたはMOQオブジェクトと一緒に注入することができます。あなたのコードの2行は"as"を実行すべきではありません。正しいタイプの要素を直接処理する必要があります。

関連する問題