Rhino Mocks:有什么方法可以验证对象属性的属性约束吗?
时间:2020-03-05 18:57:05 来源:igfitidea点击:
如果我有
class ObjA { public ObjB B; } class ObjB { public bool Val; }
和
class ObjectToMock { public DoSomething(ObjA obj){...} }
有什么方法可以定义一个期望,它不仅会调用DoSomething,而且还会使obj.B.Val == true?
我试过了
Expect.Call(delegate { mockObj.DoSomething(null); }).Constraints(new PropertyIs("B.Val", true));
但是无论值是多少,它似乎都失败了。
解决方案
回答
我们可以尝试使用Is.Matching()并提供谓词约束(为清楚起见,移出了行):
Predicate nestedBValIsTrue = delegate(ObjA a) { return a.B.Val == true;}; Expect.Call( delegate {mockobj.DoSomething(null);}) .Constraints( Is.Matching(nestedBValIsTrue));