我的 Presenter 中有一个方法,它创建一个包含所有用户输入的类,称为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();
}
}