Rails without a db - how to run tests


#1

I’m writing a simple app that doesn’t need to use a database. I added
:active_record to the config.frameworks -= line in environment.rb
file. This lets me run ./script/generate fine without complaining
about no connection. However if I try to run a functional test, it
complains about no connection being established. Well…I don’t want
a connection to be established. I’ve tried overriding
Fixtures#teardown to be blank, but that doesn’t do anything. The
actual error is:

  1. Error:
    test_get_convert(HhconvControllerTest):
    ActiveRecord::ConnectionNotEstablished:
    ActiveRecord::ConnectionNotEstablished
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:111:in
    retrieve_connection' /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:20:inconnection’
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:508:in
    teardown_with_fixtures' /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:531:inteardown’
    /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/fixtures.rb:529:in
    `teardown’

I put this in my test_helper.rb file:
class Fixtures
def teardown() end
end

No luck though. I’d like to be able to run unit tests on my models
and functional tests on my controllers. I don’t see why it needs a
database to do that. Can anyone offer me any pointers?

Thanks,
Pat


#2

Perhaps not exactly the answer you’re looking for, but what I did in a
similar case (my Rails app was hitting web services for data) is to
use sqlite memory db for testing. Keep in mind you need to have sqlite
installed.

test:
adapter: sqlite3
database: “:memory:”

Hope it helps,
Obie


#3

Well I got something figure out finally…haven’t been working on it
this whole time, but I decided to give it another go tonight. You can
check it out on my blog:
http://www.flpr.org/articles/2006/01/24/database-less-testing

If anyone can tell me how to make resources show up in the browser
instead of prompt a download dialog, I’d really appreciate it :slight_smile: I’ve
tried setting the content type to text/plain, but no luck apparently.

Anyway, hope someone finds this useful.

Pat


#4

Hey Obie,

I spent some more time on this tonight and think I may have found a
solution. Thought you might be interested:
http://www.flpr.org/articles/2006/01/24/database-less-testing

Pat


#5

What did you use to format the Ruby source code you posted with color
highlighting?

Curt


#6

<typo:code lang=“ruby”>
cool ruby code here
</typo:code>


#7

Cool… you’re running a newer version of typo than I am. I gotta get
myself upgraded!

Curt