MS Fakes Shims. Assert "was called" (by closures)
Generally, I see no problem with using closures with unit testing, as long as the intent is clear and concise. Functional programming style can be difficult for others to grasp if they're not familiar with it. So, best practices here may vary from person to person and company to company. I use the pattern a lot for testing if my events are firing correctly.

bool eventCalled = false;
obj.PropertyChanged += (sender,args)=&gt; 
 {
      Assert.IsTrue(args.PropertyName.Equals("Change");
      eventCalled=true; 
 };
obj.Change = true;

Assert::IsTrue(eventCalled, "PropertyChanged was not called");