당신은 어떤 플래그 변경 작업을 만들 수 있습니다
: 심지어
[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
}
하나 개 더 접근을 - 당신이 할 수있는 동작이 호출되었는지 확인하려면 Moq을 사용하십시오. 이 경우 플래그가 필요하지 않습니다. 호출 된
public interface IHelper // consider better name
{
void ShouldRun();
void ShouldNotRun();
}
가 그런 다음 시간 작업을 확인하기 위해 모의를 사용할 수 있습니다 : 먼저 Action
위임 서명을 일치하는 방법 몇 가지 인터페이스를 필요
[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());
}
을 정말 마지막 방법의 모양, 감사처럼 :) – Alex