Если в вашем классе реализован какой-то механизм для ожидания завершения асинхронной операции, то вам следует использовать его в своем тесте.
Если нет, вы можете попробовать этот "взлом" (не проверено - я не знаюваш фальшивый фреймворк, и я не уверен, как заставить его запускать methodCalled.Set ()):
[Test]
public void TryToExecute_SubjectNotYetBeingProcessed_ProcessesSubject()
{
ManualResetEvent methodCalled = new ManualResetEvent(false);
var subject = new Subject();
var rule = new Mock<IBusinessRule>();
rule.Setup(x => x.RunChildren(subject)).Do(X=>methodCalled.Set()); //RunChildren will be called in a seperate Thread
InBuffer.TryToExecute(subject, rule.Object);
Assert.IsTrue(methodCalled.WaitOne(1000), "RunChildren was not called within 1000ms");
}
Обратите внимание, что такой подход не является ни приятным, ни безопасным, поэтому избегайте, если у вас есть альтернатива.