我以前曾使用Moq的 linq进行模拟功能,但仅用于设置属性或从简单函数返回值。我很好奇是否有一种方法可以配置模拟对象以使用Mock.Of<>
引发异常?
它接受Expression<Func<T, bool>>
作为谓词。如果它能够使用linq表达式来配置模拟方法以引发异常,那么我将在正确的语法上绘制空白以实现此目的。
这有可能吗?
答案 0 :(得分:1)
来自Quickstart:
LINQ to Mocks非常适合快速建立通常不需要进一步验证的依赖项。如果以后确实需要验证这些模拟的某些调用,则可以使用
Mock.Get(instance)
轻松地检索它们。
尽管它没有明确提及例外,但同样适用于它们:
var mockService = Mock.Of<ISomeService>(/*your usual declarative setup*/);
// adding exceptions by reverting to classic setup:
Mock.Get(mockService).Setup(s => s.MyMethod()).Throws(myException); // or Returns/Verify/etc.
因此,您最好的办法是将两种方式混合使用。 Mock.Of<>
可以完成简单的设置,而Mock.Get()
可以通过检索内部创建的模拟来添加验证/例外。