Please read for an updated status on RailsCasts:
Learn more or hide this
yeah .the speed of test is very important for TDD.. personally i find Spork + sublime Text2 Rspec bundle is really helpful and significantly fast!
As of MiniTest 4.2.0 you can run tests in parallel with parallelize_me.
Oh man that's great. I feel the reason that ryan chose to focus on Rspec in this episode is that it is still widespread in most existing applications. And, the rails core team took minitest out of rails 4 for the time being.
I'm using minitest spec in my latest application, the tests are blazingly fast.
I was curious how this setup compares with using MiniTest or how much faster MiniTest and MiniTest Spec would be when using some of these gems and techniques.
Ryan, FactoryGirl.build implictly creates records in database when it has associations. Maybe it's better to use just Model.new for things like validations instead of build()?
That's absolutely the case. I believe Model.new is faster than 'build' method. There's an article about it: http://blog.12spokes.com/web-design-development/how-factorygirl-can-slow-down-your-test-suite-aka-factory-build-vs-blank-activerecord-objects/
You can use build_stubbed, that will build object with stubbed associations.
that's really good.
Would have liked to see this cast for Test::Unit too... ;-)
Only one problem with zeus and guard:
When we are using it, randomized with seed is always 0. Any solutions/suggestions? Is not a very big deal nonetheless.
Please open an issue on zeus on github
I've been dealing with this problem a lot lately while building a multi-tenancy app. Corey Haines' view on TDD is very interesting, and I encourage anyone interested to check out his brand new screencast episodes on Clean Coders.
If you have problems with url helpers while running zeus, I could be wrong but believe it's because of this here.
I applaud that effort to optimize time, but like spork, I've kicked zeus to the curb. They make the test environment just a little too dissimilar from the production and development environments. I wind up spending a lot of time tracking down bugs in my code... or my tests... only to learn it's neither; it's my testing environment flaking out. So how much time is it really saving? (BIG fan of guard, though.)
I have this test which is taking 5 seconds to run:
describe "GET /event/id" do
it "allows flagging an event", js: true do
create(:recording, event: user_event)
How would I speed up a test like that? -- I'm using poltergeist with phantomjs and all js: true tests are painfully slow :(
Yes that's true Bradley...
You can tag it as 'slow' and just run it on CI.
I suspect your test is so slow because of page.should_not have_content. Instead use page.should have_no_content
The first one will wait and see if the content appears. The second will test straight away that there is no content.
I had problems getting zeus and guard working nicely together until I found that I had to upgrade guard-rspec to 2.1.0 or greater
gem 'guard-rspec', "~> 2.1.0"
I've got everything working except parallel in guard. I have zeus running parallel and zeus working within guard, I've added the parallel: true to my guardfile.
Would this be an issue with guard, guard-rspec or parallel_tests? What versions of these gems should I be running?
Hope it helps ;)
Is anybody else receiving this error?
To replicate you clone the repo for the episode, go into the after folder and run
time bundle exec rake spec:models
I am using ruby 1.9.3-p385 and rbenv.
Episode translates single digit seconds into timecode with minutes
Failure/Error: build(:episode, seconds: 60*8+3).timecode.should eq('8:03')
uninitialized constant Episode::TimeDuration
# ./app/models/episode.rb:8:in `duration'
# ./app/models/episode.rb:5:in `timecode'
# ./spec/models/episode_spec.rb:19:in `block (2 levels) in <top (required)>'
I did a crude fix that seems to work. I basically just required the time_duration library from inside models/episode.rb.
class Episode < ActiveRecord::Base
Please correct me if this is the wrong approach :)
What a great episode! Thanks a lot for this, my test-suite is much faster now!
Wow my test suite went from 1min30sec to 58 sec just by using the GC trick! Thank you!
What about the sqlite :memory: database ? I have been using this since months for my tests, just to speed up the database transactions without having to change the specs. Not sure how big the gain is in the current rails but it was a big improvement once.
hi does anybody knows or can point me to some examples if using the above with mongodb?
This gem https://github.com/evrone/factory_girl-seeds helps to minimize total spec run time by preloading records for factory_girl and then use them in spec.
Why running tests with rspec is faster than with rake? What's rake doing unnecessarily?
It seems that one of the things rspec-rails does is to add 'test:prepare' as a dependency to the test task. Commented it in the activerecord databases.rake to check and it's accountable for 2 seconds here.
Still cannot figure out where the other 2 seconds goes.
This bug has been fixed in Rails 4.
Try https://github.com/evrone/factory_girl-seeds to speed up your tests
Besides a couple of shortcomings, which i think can be fixed with time, it has taught us how to save on time while testing, hence making work a whole lot easier
Really helped me a lot. Thanks.
speedtest.net is best
Thanks for sharing the info, keep up the good work going.... I really enjoyed exploring your site. good resource...
Another great cast :)
This is really very nice post you shared, i like the post, thanks for sharing
This is really good and working for me. Thank you very much.
waw this was really a new information that is on testing that also about selective testing, preload rail testing are all new ideas that you have come up with in testing.
I have recently started a blog, the info you provide on this site has helped me greatly. Thanks for all of your time & work. https://goo.gl/EGCwbp https://goo.gl/26cYOO https://goo.gl/n42eWw
thank you for giving me the necessary information
This is really good and working for me. Thank you very much.
Diwali, the "festival of lights", is a South Asian festival in Nepal (as Tihar) and India (as Deepawali) celebrated in autumn Happy Diwali 2016 (northern hemisphere) or spring (southern hemisphere) every year. It is an official holiday in Fiji, Guyana, India, Pakistan, Malaysia, Mauritius, Myanmar, Nepal, Singapore, Sri Lanka, Suriname and Diwali Wishes Trinidad and Tobago. The festival spiritually signifies the victory of light over darkness, good over evil, knowledge over ignorance, and hope over despair and is celebrated by Hindus, Sikhs, and Jains. Its Happy Diwali celebration includes millions of lights shining on housetops, outside doors and windows, around temples and other buildings in the communities and countries where it is observed. The festival preparations and rituals typically extend over a five-day period, but the main festival night of Diwali Diwali Messages coincides with the darkest, new moon night of the Hindu Lunisolar month Kartika in Bikram Diwali SMS Sambat calendar. In the Gregorian calendar, Diwali night falls between mid-October and mid-November.
Before Diwali night, people clean, renovate, and decorate their homes and offices. On Diwali night, people dress Diwali Images up in new clothes or their best outfit, light up diyas (lamps and candles) inside and outside their home, participate in Diwali Status family puja (prayers) typically to Lakshmi – the goddess of fertility and prosperity. After puja, fireworks follow, then a family Diwali Quotes feast including mithai (sweets), and an exchange of gifts between family members and close friends. Diwali also marks a major shopping period in nations where it is celebrated.
The name of festive Diwali Greetings days as well as the rituals of Diwali vary significantly among Hindus, based on the region of India. In many parts of India, the festivities Diwali Pics start with Dhanteras (in Northern and Western part of India), followed by Naraka Chaturdasi on second day, Diwali on the third day, Diwali Padva dedicated to wife–husband relationship on the fourth day, Shivaay Box Office Income and festivities end with Bhai Dooj dedicated to sister–brother bond on the fifth day. Dhanteras usually falls eighteen days after Shivaay Box Ofice Collection Dussehra.
First sign in through GitHub to post a comment.