0
私の静的メソッドは以下のとおりです。問題は、私のコードがインタフェースを実装するオブジェクト/クラスを注入していないことですが、メソッドのパラメータとしてFuncを使用しています。どのようにMoqとそれを嘲笑する?パラメータとしてのFuncオブジェクトを持つときMoqをパラメータとしてFuncを持つユニットテストメソッドの使用方法
public class Repeater
{
const int NumberOfReapetsWithException = 5;
public static async Task<string> RunCommandWithException(Func<string, Task<string>> function, string parameter,
ILoggerService logger = null, string messageWhileException = "Exception while calling method for the {2} time", bool doRepeatCalls = false)
{
int counter = 0;
var result = "";
for (; true;)
{
try
{
result = await function(parameter);
break;
}
catch (Exception e)
{
if (doRepeatCalls)
{
string message = HandleException<string, string>(parameter, null, logger, messageWhileException, ref counter, e);
if (counter > NumberOfReapetsWithException)
{
throw;
}
}
else
{
throw;
}
}
}
return result;
}
...
} }
何らかの理由でMoqを使用する必要がありますか?単体テスト内に独自のFuncオブジェクトを作成するだけで済みます。 –
一般的に、私は開始された時間を数えたいと思っています。私は毎回増分することができるプロパティで新しいクラスを作成できることを知っています:)。しかし、私はMoq;を使用したい) –
は、関数を作成し、Moqの必要がないことを使用します。関数内で呼び出された回数を数えることができます。サイドノート。デザインをリファクタリングする必要があります。リピータは、静的メソッドを使用する必要がないようにリファクタリングすることができます – Nkosi