On Fri, Dec 2, 2016 at 11:57 AM, 'krfg' via Ruby on Rails: Talk
<
rubyonra...@googlegroups.com> wrote:
> Some of my tests would not pass if the test database was not cleared after
> the previous tests.
The important thing is that every test start from a *known state*.
The easiest state to achieve and reason about, is empty. It also
forces you to be more explicit within your tests (or their
setup/before blocks) about any records you're adding in support of the
test.
But, if you want to start from a known *populated* state, that's a
pretty common approach too.
Either way, though, you need to clean up any changes each test makes.
With a populated start state, you can do each test in a transaction
and roll it back, which assumes you're using a DBMS that supports
that. With an empty state, you can do that, *or* truncate the tables,
or various other options.
-Dave
--
Dave Aronson, consulting software developer of Codosaur.us,
PullRequestRoulette.com,
Blog.Codosaur.us, and Dare2XL.com.