1

IWebdriverモックオブジェクトをに変換する方法はIJavaScriptExecutor?

私のコード:

private Mock<IWebDriver> _mockBrowserDriver;
_mockBrowserDriver = new Mock<IWebDriver>();
var jsExecutor = (IJavaScriptExecutor) _mockBrowserDriver;

結果:

Unable to cast object of type 'Castle.Proxies.IWebDriverProxy' to type 'OpenQA.Selenium.IJavaScriptExecutor'.
4

2 に答える 2

2

ここで何を達成しようとしていますか?IJavaScriptExecutorから継承せずIWebDriver、その逆も同様です。逆コンパイルされたソースからの署名は次のとおりです。

public interface IWebDriver : ISearchContext, IDisposable {}

public interface ISearchContext {}

public interface IJavaScriptExecutor {}

モックされたインスタンスでキャストを実行する場合は、次のように、モックされてObjectいる実際のタイプのプロパティを使用する必要があります。

var jsExecutor = (IJavaScriptExecutor) _mockBrowserDriver.Object;

この場合でも、無効なキャスト例外が発生します。

余談ですが、なぜあなたはモックをしようとしているのIWebDriverですか?検収試験に使われる傾向があるので、検収試験コードを単体テストしようとしていますか?そうでない場合は、実際にIWebDriver製品コードで使用していますか?

于 2013-02-20T09:06:35.410 に答える
1

以下のステートメントを追加して解決策を見つけました

_mockBrowserDriver.As<IJavaScriptExecutor>();

チャールズに感謝します。levelnis の迅速な返信に感謝します。私は驚きました!!!

  1. はい、モック オブジェクトを準備して単体テスト ケースを作成しています。
  2. カスタム Selenium アクションをテストするための単体テスト ケース。
于 2013-02-20T18:02:23.137 に答える