いユニットテストのコードとの相互作用とinstantiates第三者のCOMオブジェクト?
-
09-06-2019 - |
質問
最大の課題は現在保持していく必要がありからダイビングチユニット試験は本当に大きな割合を占めのコードを書き込んで大きく依存し第三者のCOMオブジェクトからの異なる源泉をもち相互作用(書いadd-insのためのMicrosoft Office用のヘルパーの図書館が必要な場合はい).
思いを使用模擬物がどうしている。参照:うので比較的容易がいかないのではないかと思パスへの参照は、既存のオブジェクトでの私のルーチンのインスタンスを生成外COMオブジェクト自体は、その時に渡しその他の外部のCOMオブジェクトからなる異なる図書館があります。
何がベストプラクティス-アプローチ。きんで検査コードを一時的に変更の登録情報のレジストリの試験のコードはインスタンスを生成の模擬物ょうか?すべきとして注入型図書館の単位はいくらですか?他の手法があるのでしょうか。
私は特に感謝しては、事例、およびツールのためのDelphiもうとして嬉しいより一般的な助言や高レベルの説明で代用することもできます。
おかげさ
オリバー
解決
従来のアプローチというクライアントコードを使用する必要がありますラッパー、スをインスタンス化のCOMオブジェクトです。このラッパーです(*_*)正.
がん部品の新的なヘルプオーサリング-ツースをインスタンス化のCOMオブジェクトに対して直接、これは当てはまりませんね。場合は変更できるコードを使用できる工場のパターン:をご利用された工場のCOMオブジェクトです。できる模擬の工場を返す代替オブジェクト。
るかどうかのオブジェクトを通じてアクセスラッパーを使用すること、または原COMインタフェースは、返却費用はかかりません。を選択する模擬しCOMインタフェースを忘れないでくださ器IUnknown::QueryInterfaceお模擬いま嘲笑すべてのインタフェースを、特にオブジェクトが次のどれかの場合はそれに渡されるその他のCOMオブジェクトです。
また、チェックアウトの CoTreateAsClass 方法。そんでもかんで作られています。
他のヒント
まり設計testability'.理想的には、まずインスタンスを生成方のCOMオブジェクトが直接アクセスにより層間接指定するに置き換えることができ、モックオブジェクトです。
現在、COMはその提供レベルの間接指定できて模擬オブジェクトにおいて代替のためのインタビューで思い痛みをとだろうか、既存の嘲笑う。
いく薄いラッパークラス周辺の第三者のCOMオブジェクトの負荷模擬オブジェクトではなく、実際のCOMオブジェクトのユニット試験状態です。まいによって、このような第二のコンストラクタが呼びかけを通過するの模擬オブジェクトです。通常のコンストラクタでロードのCOMオブジェクトしてください。
Wikipedia記事のが良いの対象 Wikipedia artible