と呼ばれるすべてのユーザー入力を含むクラスを作成するプレゼンターにメソッドがありますUserInputEntity
。インターフェイスを実装しますIUserInputEntity
。現在、タイプのローカル変数として宣言しているためUserInputEntity
、次のメソッドでモックすることはできません(簡潔にするために簡略化しています)。
public void CompletionReportNotifier(object sender, VerificationStatusEventArgs e)
{
_view.PermanentCsvFileVerificationCancellation = null;
string logMessage;
bool inputsVisible = false;
//Mocking inputs.NumberOfErrorsFound??
if (e.CarriedOutToCompletion != true || inputs.NumberOfErrorsFound > 0)
{
inputsVisible = true;
_view.VerificationCompleted = false;
logMessage = "failed to complete operation";
}
else
{
_view.VerificationCompleted = true;
logMessage = "Completed operation";
}
_view.UIUpdate(logMessage, inputsVisible);
}
これを回避する最も適切な方法は何ですか? 私が考えることができる唯一の解決策は、エンティティ クラスのコンストラクターのみを呼び出し、IUserInputEntity
. inputs
次に、プレゼンターの の宣言を type に変更しIUserInputEntity
ます。これは適切でしょうか、それともより良い方法がありますか?
以下は、のインスタンスがinputs
現在作成されているメソッドのコピーです (簡略化)。
private void DataVerification(Object sender, EventArgs e)
{
if (_view.VerifyingData != true)
{
inputs = new UserInputEntity(_view.DataTypeInputs, _view.ColumnNameInputs, _view.InitialRow, _view.FinalRow, _view.CurrencyPair, _view.CsvFilePath, _view.ErrorLogFilePath);
// ...
verification.VerifyDataTypesAsync();
}
else
{
_view.PermanentCsvFileVerificationCancellation.Cancel();
}
}