Рассмотрим следующий фрагмент;
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) в лямбда-выражении или, что более важно, это будет работать как предназначенный.
Как я могу подойти к этой проблеме? Пожалуйста, обратите внимание, что макет является частичным, хотя я могу жить с
Подход к настройке с обратными вызовами, если он аккуратно решает мою проблему.
Любые указатели будут с благодарностью ...