戻り値のセットアップと、式が呼び出された回数の確認が必要な場合、これを 1 つのステートメントで実行できますか?
私が収集できるものから、MoqSetup(SomeExpression).Verifiable()
は と一緒に呼び出されVerify()
、基本的にVerify(SomeExpression, Times.AtLeastOnce)
? つまり、式が呼び出されたことのみを検証します。
質問をよりよく説明するための例を次に示します。インターフェイスの場合:
interface IFoo
{
int ReturnSomething();
}
次の 2 つのブロックは同等ですか (最初のブロック以外は、検証可能とマークされたすべてのセットアップを検証します)?
void Test()
{
var mock = new Mock<IFoo>();
mock.Setup((m) => m.ReturnSomething()).Returns(1).Verifiable();
mock.Verify();
}
と
void Test()
{
var mock = new Mock<IFoo>();
mock.Setup((m) => m.ReturnSomething()).Returns(1);
mock.Verify((m) => m.ReturnSomething(), Times.AtLeastOnce());
}
呼び出しの数を確認したい場合 (たとえば 2 回)、Setup と Verify で式が繰り返される唯一の方法ですか?
void Test()
{
var mock = new Mock<IFoo>();
mock.Setup((m) => m.ReturnSomething()).Returns(1);
mock.Verify((m) => m.ReturnSomething(), Times.Exactly(2));
}
Setup と Verify を呼び出さなければならないのは好きではありません。まあ、これは AAA にとっては良いアイデアなので、言い換えれば、Setup と Verify の表現を繰り返さなければならないのは好きではありません。現時点では、式を変数に格納して各メソッドに渡していますが、あまりクリーンではありません。
PS - このコンテキストは、キャッシュが更新されたかどうか (有効期限など) をテストするためのものです。