public void WriteRecord_MultipleRecords_CommandIsExecutedForEachRecord() { var people = Person.Faker.Generate(2); var commands = new SqlCommand[] { DatabaseWriterTests.GenerateInsertPersonCommand(people[0]), DatabaseWriterTests.GenerateInsertPersonCommand(people[1]) }; var commandFactory = MockRepository.GenerateMock <IDatabaseWriterCommandFactory>(); commandFactory.Stub(x => x.Create(Arg <object> .Is.Equal(people[0]))).Return(commands[0]); commandFactory.Stub(x => x.Create(Arg <object> .Is.Equal(people[1]))).Return(commands[1]); using (var databaseWriter = new DatabaseWriter(commandFactory, DatabaseWriterTests.DbConnectionString)) { databaseWriter.Open(); databaseWriter.WriteRecord(people[0]); databaseWriter.WriteRecord(people[1]); databaseWriter.Commit(); } using (var testDb = new TestDb(DatabaseWriterTests.DbConnectionString)) { var records = testDb.Delete("dbo.Person", people.ToArray()); Assert.AreEqual(2, records.Length); } }