問題タブ [pascalmock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - PascalMockで配列パラメータを開いてメソッドをモックするにはどうすればよいですか?
私は現在、単体テストとモックを完全に開始する過程にあり、次の方法に出くわしましたが、次の方法で動作するモック実装を作成できないようです。
(TImplContextID
整数の単なるタイプエイリアスです)
これは私がどこまで得たかです:
しかし、開いている配列パラメータをどのようにモックするのか理解できませんでしたAArgs
。何か案は?
out
また、 -parameterを返す簡単な方法があり、-typedパラメーター(基本的にはレコード、つまり値型)に-notationを使用するのが正しい方法ですかAInstance
?@
TGUID
現在のバージョンのPascalMockでこのメソッドをモックすることは可能ですか?
更新2:わかりやすくするために質問テキストを切り詰めました。もともとは、メイソンの回答が言及しているモックメソッドの次の誤った実装が含まれていました。
これで、コンパイラは.ReturnsOutParams([AInstance])
「変数型配列コンストラクタの引数型が正しくありません」と文句を言いました。
unit-testing - モックオブジェクトを使用するときに、単体テストで実装の内部に関する知識が必要になるのを防ぐにはどうすればよいですか?
私はまだユニットテスト、特にモックに関して学習段階にあります(私はPascalMockとDUnitフレームワークを使用しています)。私が今つまずいたことの1つは、テストされたクラス/インターフェイスの実装の詳細を単体テストにハードコーディングする方法が見つからず、それが間違っていると感じたことです...
例:アプリケーション設定(基本的には名前と値のペア)を読み書きするための非常に単純なインターフェイスを実装するクラスをテストしたいと思います。コンシューマーに提示されるインターフェイスは、値が実際に保存される場所と方法(レジストリ、INIファイル、XML、データベースなど)に完全に依存しません。当然、アクセスレイヤーは、構築時にテストされたクラスに注入されるさらに別のクラスによって実装されます。このアクセスレイヤーのモックオブジェクトを作成しました。これで、レジストリ/ INIファイルなどを実際に読み書きすることなく、インターフェイス実装クラスを完全にテストできるようになりました。
ただし、テストされたクラスがアクセスしたときにモックが本物とまったく同じように動作することを確認するには、単体テストで、テストされたクラスが期待するメソッド呼び出しと戻り値を非常に明示的に定義して、モックオブジェクトを設定する必要があります。つまり、アクセスレイヤーのインターフェイスや、テスト対象のクラスがそのレイヤーを使用する方法を変更する必要がある場合は、インターフェイスであっても、そのインターフェイスを内部的に使用するクラスの単体テストも変更する必要があります。私が実際にテストしているクラスの一部はまったく変更されていません。これは、モックを使用するときに私が一緒に暮らさなければならないものですか、それともこれを回避するクラス依存関係を設計するためのより良い方法がありますか?