private void Setup() { parametersList = new List<DbParameter>(); target = new DatabaseTraceListener_Accessor( storedProcedureName, logConnectionStringName, null, null); //target.connectionStringName = "TestConnectionString"; target.factory = MockRepository.GenerateStub<DbProviderFactory>(); target.connectionStringProvider = MockRepository.GenerateStub<IConfigurationValueProvider>(); target.connectionStringProvider.Stub((p) => p[target.connectionStringName]). Return(target.connectionStringName); connection = MockRepository.GenerateStub<DbConnection>(); command = MockRepository.GenerateStub<DbCommand>(); parameters = MockRepository.GenerateStub<DbParameterCollection>(); // Stubs for the connection and command target.factory.Stub( (f) => f.CreateConnection()).Return(connection); target.factory.Stub((f) => f.CreateCommand()).Return(command); // Definitely want to verify that Open is called connection.Stub((c) => connection.Open()); // Unfortunately can't verify Dispose got called connection.Stub((c) => connection.Dispose()); // Will verify later if ExecuteNonQuery is called command.Stub((c) => command.ExecuteNonQuery()).Return(1); command.Stub((c) => c.Dispose()); // Setup repetitive stub for the command parameters //DbParameter parameter = null; command.Stub((c) => c.Parameters).Repeat.Any().Return(parameters); for (int i = 0; i < 12; i++) { DbParameter parameter = MockRepository.GenerateStub<DbParameter>(); target.factory.Stub((f) => f.CreateParameter()).Return(parameter); parameters.Stub((p) => p.Add(parameter)).Do(new HandleParameterDelegate(HandleParameter)); } }