답변:
업데이트 : 버전 3부터는 위의 질문 또는 Dann의 답변에 대한 업데이트를 확인하십시오.
예상하지 않은 메소드를 호출하면 모의을 엄격하게하여 실패하지 않습니다.
new Mock<IMoq>(MockBehavior.Strict)
또는 모의를 풀고 싶다면 .Throws (Exception)
var m = new Mock<IMoq>(MockBehavior.Loose);
m.Expect(a => a.moo()).Throws(new Exception("Shouldn't be called."));
Times.Never
enum 세트 가있는 테스트 후 확인을 실행하십시오 . 예 :
_mock.Object.DoSomething()
_mock.Verify(service => service.ShouldntBeCalled(),Times.Never());
도난 : 질문에 대한 John Foster의 답변, "Moq를 더 잘 이해하는 데 도움이 필요합니다"
테스트 할 수있는 것 중 하나는 65 세 이상이 메소드에 전달 될 때 pay 메소드가 호출되지 않는다는 것입니다
[Test] public void Someone_over_65_does_not_pay_a_pension_contribution() { var mockPensionService = new Mock<IPensionService>(); var person = new Person("test", 66); var calc = new PensionCalculator(mockPensionService.Object); calc.PayPensionContribution(person); mockPensionService.Verify(ps => ps.Pay(It.IsAny<decimal>()), Times.Never()); }
.AtMostOnce ()를 사용하십시오.
실제 테스트 후 메소드를 다시 호출하십시오. 예외가 발생하면 호출됩니다.