Проверка метода, вызванного с определенным производным параметром - PullRequest
0 голосов
/ 29 сентября 2011

Рассмотрим следующий фрагмент;

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))); 

Как я и опасался, он не работает с параметром MonthlyReport для Is <>, хотя он является производным от BaseReport. Если я использую Is, то я не могу использовать p.month в выражении, и я не настолько опытен с c #, чтобы знать, могу ли я использовать if (p is MonthlyReport) в лямбда-выражении или, что более важно, это будет работать как предназначенный.

Как я могу подойти к этой проблеме? Пожалуйста, обратите внимание, что макет является частичным, хотя я могу жить с Подход к настройке с обратными вызовами, если он аккуратно решает мою проблему. Любые указатели будут с благодарностью ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...