Rails, Logger, and those pesky Tests
36 comments Latest by hedr dingfeng Wed, 25 Aug 2010 06:38:19 GMT
First of all, I would like to thank all of you who took a moment to gather around the campfire with me and share your stuff. That was much appreciated.

So, I started playing with the idea of logging in unit and functional tests and I quickly realized that calling logger.info wasn’t an option. What’s the deal-e-o? Before I gather up my posse and conspire a train hijacking, I decided that I would see how quickly I could solve my problem before I called you all out to the Rio Rails Grande for an old-fashioned shoot out. Ya know, the kind that results in a Bon Jovi song and a little blood.
- A) my holster was eaten by my dog and
- B) I found a quick solution to clean up this
loggersituation.
Okay… are you ready?
I know… this is totally groundbreaking!!!
Open up test/test_helper.rb and add the method… logger.
# other stuff at the top of the file... just
# look down below at def logger
class Test::Unit::TestCase
self.use_transactional_fixtures = true
self.use_instantiated_fixtures = false
# here... look here! right below this
def logger
RAILS_DEFAULT_LOGGER
end
endSave that and pick up your pistol…
The next step is to call the logger method in your unit and functional tests.
def test_the_obvious
logger.info( 'asserting that 1 is 1' )
assert 1, 1
endI posted this on Rails Weenie as well.
Enjoying the content? Be sure to subscribe to my RSS feed.






Maybe you posted this in another blog, but I’m curious as to why you’d want logging in unit tests. It’s not like you’re getting diagnostic info from your app in development mode that you don’t want filling up your production logs..simple puts statements should do the trick in unit tests, shouldn’t they?
My god the ground is breaking beneath my feet, only yesterday was I wondering how to do this.
I am also wondering why logging would be important in tests. I use $stdout.puts statements right now if I need to know anything.
But that was a smart idea ;)
I find that when I’m testing some more complex units of test and want to get some information about what is happening before and after each database interaction… having some of my own text help break things out gives me clarity. :-)
You want logging in unit tests so you can help debug what went wrong when a problem is found. Logging is for always.
Sweet.
Now you can also get your assert messages for failures to log by adding this to the end of your helper.
module Test module Unit module Assertions alias_method :assert_block_original, :assert_block def assert_block(message="assert_block failed.", &block) begin assert_block_original(message, &block) rescue AssertionFailedError => error logger.info(message.to_s) raise error end end end end endThanks a lot! Saved me a huge headache. Immediate use for the logger was to store a very long output string of a function so that I could write testcases for it.
http://adbrssgfsfrge.host.com desk3 [url=http://adbsssgfsfrge.host.com]desk4[/url] [link=http://adbassgfsfrge.host.com]desk6[/link]
While this is cool and could be useful, one could also go the puts way and do this: rake test > log.log Yathink?
Satya, if you do that, your database statements and log messages will be in separate files. Not good. Personally, I find it a lot more useful when they’re in the same file so you can see the log messages and database statements in the order they were executed.
Thanks, solved a problem quickly with this bit of info
Thanks for this. I may be late to the thread party, but this is exactly what I was looking for.
Heed the statements of sb, for that is why you want to use Logger.
4 years later, this is still helping a brutha out. Thanks!
Thank you for your post!
good sharing
thanks for post. Christian Louboutin boots Christian Louboutin pumps
Great tip! I also just re-watched Ryan Bates’ The Logger screencast (http://railscasts.com/episodes/56-the-logger) and he pointed out we use the logger constant directly in the unit test with: RAILS_DEFAULT_LOGGER.debug “msg”
I am interest in the Abercrombie & Fitch Abercrombie Fitch Abercrombie
What’s the deal-e-o? Before I gather up my posse and conspire a train hijacking, I decided that I would see how quickly I could solve my problem before I called you all out to the Rio Rails Grande for an old-fashioned shoot out.
http://www.supra-black.com/supra-suprano-high-grey-patent-green-shoes-p-681.html
http://www.edhardy-us.com/ed-hardy-shoes-ed-hardy-mens-shoes-c-47_44.html
ret re t
ytrytr y
ty rt rt
try tr
Demonstrate a unique new conceptjordan shoesAwA78
A Breitling Watches makes a complete man because the name is associated with elegance and status. It is a sweet poem on a wrist dial. All over the world busy professionals and achievers wear Breitling Aeromarine not only for its preciseness of time and speed movement but it also provides many utility services. Bentley 6.75 functionality is something beyond reproach. Breitling Windrider are generally larger that helps to display more functions and provide more visibility to the analog markers. Choosing hermes wisely: And, a real one from hermes belt comes with a key set and engraved lock. The markings of hermes wallet are embossed, and the designer will never put metal plates on its creations. Finally we need to check the material and the stitching of the handbag
Louis Vuitton Zippy Coin Purse M93739 Louis Vuitton Zippy Coin Purse Louis Vuitton Zippy Coin Purse M93741 Louis Vuitton Zippy Coin Purse Louis Vuitton Zippy Coin Purse M93740 Louis Vuitton Zippy Coin Purse Louis Vuitton Zippy Wallet M60241 Louis Vuitton Zippy Wallet Louis Vuitton Zippy Wallet M60242 Louis Vuitton Zippy Wallet Louis Vuitton Zippy Wallet M60243 Louis Vuitton Zippy Wallet Louis Vuitton Zippy Wallet M60244 Louis Vuitton Zippy Wallet Louis Vuitton Sarah Wallet M93742 Louis Vuitton Sarah Wallet Louis Vuitton Sarah Wallet M93743 Louis Vuitton Sarah Wallet Louis Vuitton Sarah Wallet M93744 Louis Vuitton Sarah Wallet Louis Vuitton Sarah Wallet M93745 Louis Vuitton Sarah Wallet Louis Vuitton Sarah Wallet M93746 Louis Vuitton Sarah Wallet Louis Vuitton Sarah Wallet M93747 Louis Vuitton Sarah Wallet Louis Vuitton Sarah Wallet M93748 Louis Vuitton Sarah Wallet Louis Vuitton Insolite Wallet M93749 Louis Vuitton Insolite Wallet Louis Vuitton Insolite Wallet M93750 Louis Vuitton Insolite Wallet Louis Vuitton Insolite Wallet M93751 Louis Vuitton Insolite Wallet Louis Vuitton Insolite Wallet M93752 Louis Vuitton Insolite Wallet Louis Vuitton Insolite Wallet M93753 Louis Vuitton Insolite Wallet Louis Vuitton Insolite Wallet M93754 Louis Vuitton Insolite Wallet Louis Vuitton Insolite Wallet M93755 Louis Vuitton Insolite Wallet Louis Vuitton Koala Wallet M58081 Louis Vuitton Koala Wallet Louis Vuitton Koala Wallet M58082 Louis Vuitton Koala Wallet Louis Vuitton Koala Wallet M58087 Louis Vuitton Koala Wallet Louis Vuitton Eugenie Wallet M93736 Louis Vuitton Eugenie Wallet Louis Vuitton Eugenie Wallet M93737 Louis Vuitton Eugenie Wallet Louis Vuitton Eugenie Wallet M93738Louis Vuitton Eugenie Wallet Louis Vuitton Keys Holder M93733 Louis Vuitton Keys Holder Louis Vuitton Keys Holder M93734 Louis Vuitton Keys Holder Louis Vuitton Keys Holder M93735 Louis Vuitton Keys Holder Louis Vuitton 4 Key Holder M93730 Louis Vuitton 4 Key Holder Louis Vuitton 4 Key Holder M93731 Louis Vuitton 4 Key Holder Louis Vuitton 4 Key Holder M93732 Louis Vuitton 4 Key Holder Louis Vuitton Business Card Holder M66559 Louis Vuitton Business Card Holder Louis Vuitton Business Card Holder M66560 Louis Vuitton Business Card Holder Louis Vuitton Business Card Holder M66561 Louis Vuitton Business Card Holder
Dolce&Gabbana bag, Versace handbag, Kooba Handbags, YSL bag, miu miu handbag, balenciaga purse
Ed hardy womens online store where various Ed hardy women’s swimwear, Ed hardy women’s T-shirts, Ed hardy women’s denim, Ed hardy women’s hoodies/outwear,Ed hardy women’s dresses,Ed hardy women’s shoes,Ed hardy women’s tanks,Ed hardy women’s boots,Ed hardy women’s bottoms,Ed hardy women’s lingerie,Ed hardy women’s suit. will be provided to you at the most competitive prices for your wearing pleasure. What’s more, all our Ed hardy products are the latest designs to meet your demands for fashion and individuality. So why not come here and have a look? You can always find the one that is most suitable for you
pual smith bag is fashion,convininet and is designed by the pual smith. In this side,we can offer to you many paul smith ,this bag can express the famouse characteristic of London of England.We can offer many style paul smith suits,if you are interest in them ,pls let me know .we will give you lower price ,fast delivery and best service.
Paul Smith Shoes with our top quality,hot price,fast delivery and thoughtful customer service.Paul Smith Shoes played the part of still maintained its brief, but not simple style.Paul Smith is forever not out of the fashion world! When you are fond of some one of the Paul Smith Shoes in our web,now buy you can enjoy many benefits!Free shipping and at a sale!
Really I liked your post.How nicely you have completed your goals.Thanks for sharing it.
logo design | Website design | logo designs | business logo
wasn’t an option. What’s the deal-e-o? Before I gather up my posse and conspire a train hijacking, I decided that I would see how quickly I could solve my pro
Jordan Spizike,Jordan Spizike
Air Jordan 2,Air Jordan 2
Air Jordan 3,Air Jordan 3
Air Jordan 4,Air Jordan 4
air jordan 6 rings,air jordan 6 rings
jordan dub zero,jordan dub zero
jordan sixty plus 60,jordan sixty plus 60
air jordan l style,air jordan l style
air jordan 19,air jordan 19
I am also wondering why logging would be important in tests. I use $stdout.puts statements right no