public void TestSimpleRoutingConnectionFactory() { var connectionFactory1 = new Mock <IConnectionFactory>(); var connectionFactory2 = new Mock <IConnectionFactory>(); var factories = new Dictionary <object, IConnectionFactory> { { "foo", connectionFactory1.Object }, { "bar", connectionFactory2.Object } }; var connectionFactory = new SimpleRoutingConnectionFactory(); connectionFactory.SetTargetConnectionFactories(factories); var tasks = new List <Task>(); for (var i = 0; i < 3; i++) { var count = i; var task = Task.Run(() => { SimpleResourceHolder.Bind(connectionFactory, count % 2 == 0 ? "foo" : "bar"); connectionFactory.CreateConnection(); SimpleResourceHolder.Unbind(connectionFactory); }); tasks.Add(task); } Assert.True(Task.WaitAll(tasks.ToArray(), 10000)); connectionFactory1.Verify((f) => f.CreateConnection(), Times.Exactly(2)); connectionFactory2.Verify((f) => f.CreateConnection()); }