проверка списка с помощью moq

Учитывая код вызова

List<Person> loginStaff = new List<Person>(); 

loginStaff.add(new Person{FirstName = "John", LastName = "Doe"});

this._iViewLoginPanel.Staff = loginStaff;

Каков синтаксис для проверки того, что существует посох по имени Джон Доу и что есть хотя бы один установленный посох? В настоящее время все примеры, которые я видел, довольно простые, с использованием только It. IsAny или Staff = некоторый базовый тип, но на самом деле ни один из них не проверяет данные в сложных типах, таких как списки.

Мое утверждение выглядит как

this._mockViewLoginPanel.VerifySet(x=> x.Staff = It.IsAny<List<Person>>());

, которое проверяет только тип, заданный установщику, но не размер или элементы в самом списке. Я пытался сделать что-то вроде этого:

        this._mockViewLoginPanel.VerifySet(
           x =>
           {
               List<string> expectedStaffs = new List<string>{"John Doe", "Joe Blow", "A A", "Blah"};
               foreach (Person staff in x.Staff)
               {
                   if (!expectedStaffs.Contains(staff.FirstName + " " + staff.LastName))
                       return false;
               }
               return true;
           });

Но это говорит мне, что тело лямбда-выражения не может быть преобразовано в дерево выражений. Затем у меня возникла идея поместить тело оператора в функцию и запустить ее, но во время выполнения я получаю:

System.ArgumentException: выражение не является вызовом средства задания свойств.

Обновление: В свете первых двух ответов на использование assert я попробовал этот метод, но обнаружил, что даже после установки Staff в ненулевой список он по-прежнему отображается при отладке как null. Вот так выглядит полный тест

[TestMethod]
public void When_The_Presenter_Is_Created_Then_All_CP_Staff_Is_Added_To_Dropdown()
{
    this._mockViewLoginPanel = new Mock<IViewLoginPanel>();

    PresenterLoginPanel target = new PresenterLoginPanel(this._mockViewLoginPanel.Object);

    this._mockViewLoginPanel
        .VerifySet(x => x.Staff = It.IsAny<List<Person>>());

    Assert.AreEqual(5, this._mockViewLoginPanel.Object.Staff.Count);
}

И где-то внутри конструктора PresenterLoginPanel

public PresenterLoginPanel
{
    private IViewLoginPanel _iViewLoginPanel;

    public PresenterLoginPanel(IViewLoginPanel panel) 
    { 
        this._iViewLoginPanel = panel;
        SomeFunction();
    }

    SomeFunction() {
        List<Person> loginStaff = new List<Person>(); 

        loginStaff.add(new Person{FirstName = "John", LastName = "Doe"});

        this._iViewLoginPanel.Staff = loginStaff;
    }
}

Когда я отлаживаю до следующей строки, this._iViewLoginPanel.Staff имеет значение null, что и вызывает нулевое исключение в утверждение.

5
задан abatishchev 9 June 2011 в 07:53
поделиться