使用 Moq 模拟多次调用时表现不同的 Func<T>
Using Moq to mock Func<T> that behaves differently when called multiple times
如何模拟 C# Func,使其在多次调用时 returns 不同的值或异常?
Mock<Func<bool>> mock = new Mock<Func<bool>>();
mock.SetupSequence(m => m.Invoke())
.Throws<Exception>()
.Returns(true);
当运行时,引发以下异常:
System.InvalidCastException : Unable to cast object of type
System.Linq.Expressions.InstanceMethodCallExpressionN' to type
'System.Linq.Expressions.InvocationExpression'.
我看过另一个关于使用 SetupSet
的 SO answer,但是,我需要一个序列。
根据@henrikmerlander 的另一个答案的提示,解决方案就是不使用 .Invoke
方法。
Mock<Func<bool>> mock = new Mock<Func<bool>>();
mock.SetupSequence(m => m())
.Throws<Exception>()
.Returns(true);
如何模拟 C# Func,使其在多次调用时 returns 不同的值或异常?
Mock<Func<bool>> mock = new Mock<Func<bool>>();
mock.SetupSequence(m => m.Invoke())
.Throws<Exception>()
.Returns(true);
当运行时,引发以下异常:
System.InvalidCastException : Unable to cast object of type
System.Linq.Expressions.InstanceMethodCallExpressionN' to type
'System.Linq.Expressions.InvocationExpression'.
我看过另一个关于使用 SetupSet
的 SO answer,但是,我需要一个序列。
根据@henrikmerlander 的另一个答案的提示,解决方案就是不使用 .Invoke
方法。
Mock<Func<bool>> mock = new Mock<Func<bool>>();
mock.SetupSequence(m => m())
.Throws<Exception>()
.Returns(true);