Не уверен, что это полный ответ, но на этой странице есть интересное примечание о многопоточности:
http://www.ayende.com/projects/rhino-mocks/api/files/MockRepository-cs.html
MockRepository может выполнять проверку в нескольких потоках, но запись в несколько потоков не рекомендуется.
Первое, что я бы попробовал, это настроить все насмешки и ожидания, а затем выполнить ваши конструкторы. Кажется, это работает для меня:
[TestMethod]
public void TestMethod_Scenario_Result()
{
var stubs = new IFool[5];
for (int i = 0; i < stubs.Length; ++i)
{
var fool = MockRepository.GenerateStub<IFool>();
fool.Stub(x => x.AmIFool).Return(false);
stubs[i] = fool;
}
foreach (var stub in stubs)
new Fool(stub);
}
Поскольку этот код работает, я полагаю, что проблема заключается в том, что вы выполняете воспроизведение в одном потоке, а запись (для другого заглушки) в другом потоке. Воспроизведение и запись одновременно кажется небезопасным для потоков, даже если вы работаете с разными заглушками.