Я хочу выяснить, как отправить функцию в качестве аргумента другой функции и утверждать, что «функция, переданная в качестве аргумента» вызывается после некоторой проверки правильности.
Например,
public class DomainLogic
{
public virtual void SetPayload(ViewPayload payload, Func<CommandData, bool> filterApplier)
{
//some validation
..............
filterApplier();
}
}
[Test]
public void Test_SetPayload()
{
DomainLogic domainLogic = m_MockRepository.DynamicMock<DomainLogic>();
domainLogic.Expect(d => d.SetPayload(Arg<ViewPayload>.Is.NotNull,
Arg < Func <CommandData, bool>>.Is.NotNull))
.WhenCalled(i => i.Arguments[1] = //pass own method);
//Logic that calls SetPayload()
MyView view = new MyView();
view.SetDomainLogic(domainLogic);
view.ChangeSelection(); // This internally calls the domainLogic's SetPayload()
// Assert that own method is called.
}
Есть ли способ, которым я могу это сделать? Я искал по всему интернету, все, что я получил, это как вызвать переданный метод, но не утверждать, вызван метод или нет.
Спасибо!