public void Sort_WhenCalled_CallsWithPassedArgument() { // Arrange IMyInterface mock = Substitute.For <IMyInterface>(); Func <IEnumerable <int>, IOrderedEnumerable <int> > func = null; mock.WhenForAnyArgs(x => x.Sort(Arg.Any <Func <IEnumerable <int>, IOrderedEnumerable <int> > >())).Do( x => { func = x.Arg <Func <IEnumerable <int>, IOrderedEnumerable <int> > >(); }); // Act mock.Sort(x => x.OrderBy(y => y)); // Assert var result = func(new[] { 6, 4 }); Assert.That(result.FirstOrDefault(), Is.Not.EqualTo(6)); Assert.That(result.FirstOrDefault(), Is.EqualTo(4)); }