Records created while tests are running are not being saved

In following code -

require “test_helper”
Class SomeControllerTest < ActionController::TestCase

def test_something
record = SomeModel.create :name => ‘test’
record.save!
gets
end

end

Above record is not being saved in the database. I can confirm this by
pausing execution by calling gets() and doing a “SELECT * FROM
some_models” right into the test database which returns no rows.

On Thu, Mar 18, 2010 at 6:08 AM, Vikrant C. [email protected]
wrote:

end

Above record is not being saved in the database. I can confirm this by
pausing execution by calling gets() and doing a “SELECT * FROM
some_models” right into the test database which returns no rows.

Tests are ran inside a transaction and are rolled back after each
test. In a separate process (i.e. ./script/dbconsole) you will not see
the data create from a test, even if you pause execution.

You should be able to see the insert (and the roll back) happening in
test.log

Even though the transaction is rolled back, the sequence on the
primary key is still advanced, so you should see that effect in a
separate process.

  • Steven

Thanks.

Just for records. Line #47 -
http://code.google.com/p/kopal/source/browse/test/network/connect_controller_test.rb?r=876e7c80c420e5faca9492bd50ed1dd943cb90ac

On Mar 18, 10:13 am, Steven H. [email protected] wrote:

On Thu, Mar 18, 2010 at 6:08 AM, Vikrant C. [email protected] wrote:

Tests are ran inside a transaction and are rolled back after each
test. In a separate process (i.e. ./script/dbconsole) you will not see
the data create from a test, even if you pause execution.

you can see the data during the test if you alter the transaction
isolation level to read uncommitted (at least you can with mysql)

Fred

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs