验证使用某个派生参数调用的方法

时间:2011-09-29 15:21:29

标签: moq

考虑以下代码段;

public enum ReportType {Monthly,Quarterly}
public class BaseReport
{
  public ReportType ReportType {get;set;}
}

public class MonthlyReport : BaseReport 
{
   public String month = "January" 
   public MonthlyReport() { ReportType = Monthly;}
}

public class Foo
{
    public virtual void AddReport(BaseReport report);
}
[Test]
public void Test1()
{
    var mock = new Mock<Foo>(){CallBase =true};
    var report = new MonthlyReport();
    mock.Object.AddReport(report);
}

我正在尝试验证是否使用某个参数调用AddReport();

mock.Verify(x => x.AddReport(It.Is<MonthlyReport>(p => p.month == "January" &&
                                                       p.ReportType == ReportType.Monthly))); 

正如我所担心的,它不适用于Is&lt;&gt;的MonthlyReport参数。即使它是从BaseReport派生的。如果我使用Is,那么我不能在表达式中使用p.month,而且我不熟悉c#以了解我是否可以在lambda表达式中使用if(p是MonthlyReport),或者更重要的是,它可以用作意图。

我该如何处理这个问题?请注意,模拟是部分的,虽然我可以忍受 设置方法与回调如果它巧妙地解决了我的问题。 任何指针都会非常感激......

0 个答案:

没有答案