Учитывая код вызова
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, что и вызывает нулевое исключение в утверждение.