Testing batch programs

I have a batch program (yes, coders like me still exist) that, while it uses the same models are our web app, it isn't webby at all. Basically, I grind through the database and send emails.

I changed the email delivery system and I want to write some testing code.

The test code I had written previously was terrible and no longer worked due to neglect and schedules.

So, what;s a good way to test a batch program? And end-to-end test (thank God for the test/mocks facility) will require that I use 6 or 7 tables and run through a lot of code that's already been tested. Testing will consist of querying my mock emailer to see if it "sent" the right number of emails, etc. And then I can query tables to see if rows are properly modified. Blah.

On the other hand, the emailer has a fair number (50? 60?) of generally small methods that "can't possibly" be wrong, so unit testing isn't floating my boat. The methods typically wrap a ActiveModel.find or iterate over an array. Of course, if I was sure that these little perfect methods were being called properly I wouldn't need to test!

So is there an alternative technique other than to just run a fake email delivery (did I mention the setup is a PITA?) and check the tables and mock emailer for expected values?