これに対して、シグネチャでは表現されないが、ユースケースの内部にて外部からデータを受け取っている、または外部へ受け渡しているものが「間接入力」あるいは「間接出力」です。先に掲示したコードだと以下にあたります。#スタブとモックについて説明します。#スタブは、テストダブルのうち、テスト対象(SUT)への「間接入力を置き換える」ものを指します。次のコード例をご覧ください。実行して取得する値を置き換えています。これをスタブと呼びます。説明のための擬似コードです。実際にはエラーになる部分などがあります。#モックは、テストダブルのうち、テスト対象(SUT)への「間接出力を取得・評価する」ものを指します。次のコード例をご覧ください。実行して出力する値を取得し、その妥当性を評価しています。これをモックと呼びます。説明のための擬似コードです。実際にはエラーになる部分などがあります。#スパイは、テストダブルのうち、テスト対象(SUT)への「間接出力を取得・保管する」ものを指します。次のコード例をご覧ください。実行して出力する値を取得、保管しています。これをスパイと呼びます。説明のための擬似コードです。実際にはエラーになる部分などがあります。スパイで保管した情報を使って評価する。params.name);スパイとモックはどちらも間接出力を取得する点において似ていますが、モックはその場で情報の妥当性を評価するのに対し、スパイは情報を保管するだけです。スパイが保管した情報を用いて、後ほど評価を行ったりします。#フェイクは、テストダブルのうち、差し替え元と同じように挙動するものを指します。定義は次の通りでした。使用しているとします。このリポジトリは、データをリモートのデータベースへ保存、取得します。テスト時はリモートのデータベースの代わりに、インメモリへ保存、取得することで代替することとします。これらは内部的には別々のソースへデータを保存していますが、使用者側から見ると挙動は全く変わりません。このように差し替え元と同じように挙動するものをフェイクと呼びます。#ダミーは、テストダブルのうち、テストに一切の影響を与えないものを指します。例ですが以下をご覧ください。実行するには第3引数まで渡す必要がありますが、この値がどうであろうが結果は影響されません。テストを実行するために必要だが、テストには影響しないものです。これをダミーと呼びます。いう意味では、テスト対象(SUT)はダミーに依存しているとは言えないため、そもそもダミーはテストダブルには含まれないという考え方もあるようです。Learnhttps://learn.microsoft.com/ja-jp/dotnet/core/testing/unit-testing-best-practices#lets-speak-the-same-language補足:モックとスタブの違いが分かりやすく説明されています。一方でフェイクという用語がテストダブルのように用いられているため、混乱しないようにご注意ください。テストダブルとその5つの分類コード間接入力と間接出力スタブ、モックスタブモックスパイ(とモック)スパイフェイクとダミーフェイクダミ。