いくつかのフラグを変更するアクションを作成できます:
[Test]
public void ChangePassword_returns_false_if_user_does_not_exist()
{
var myClass = new MyClass(mockedDependency.Object);
bool isExecuted = false; // flag to check
Action success = () => isExecuted = true; // set flag to true when executed
myClass.DoSomething(success, null);
Assert.IsTrue(isExecuted); // check if flag changed
}
または、インプレース ラムダを使用してフラグを変更することもできます。
[Test]
public void ChangePassword_returns_false_if_user_does_not_exist()
{
var myClass = new MyClass(mockedDependency.Object);
bool isExecuted = false; // flag to check
myClass.DoSomething(() => isExecuted = true, null);
Assert.IsTrue(isExecuted); // check if flag changed
}
もう 1 つのアプローチ - Moq を使用して、アクションが呼び出されたかどうかを確認できます。この場合、フラグは必要ありません。Action
最初に、デリゲート シグネチャに一致するメソッドを持つインターフェイスが必要になります。
public interface IHelper // consider better name
{
void ShouldRun();
void ShouldNotRun();
}
次に、モックを使用して、アクションが呼び出された回数を確認できます。
[Test]
public void ChangePassword_returns_false_if_user_does_not_exist()
{
Mock<IHelper> helper = new Mock<IHelper>();
var myClass = new MyClass(ockedDependency.Object);
myClass.DoSomething(helper.Object.ShouldRun, helper.Object.ShouldNotRun);
helper.Verify(h => h.ShouldRun(), Times.Once());
helper.Verify(h => h.ShouldNotRun(), Times.Never());
}