如果我有

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));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top