Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it a good practice to test absolutely everything or it is a waste of time (Rails)?

I recently learned, Rspec + Capybara (I'm new to testing things). And I've been testing some new models I've created. Now, I was thinking of adding the title column to my Post model. It's not a hard task, and I've done it many times before. But I realized that it's going to take me some work updating the spec files (e.g. post, post pages, user, user pages, factories, sample_data, etc.).

Is testing in this case, a waste of time? Or it is a good practice to test absolutely everything?

I also wonder if testing gems is a waste of time as well? Since they've been probably already tested by their creators (the same for testing something taken from a reliable tutorial).

like image 979
alexchenco Avatar asked Nov 10 '12 01:11

alexchenco


People also ask

What is Rails integration test?

While unit tests make sure that individual parts of your application work, integration tests are used to test that different parts of your application work together.

How do you run a test in rails?

We can run all of our tests at once by using the bin/rails test command. Or we can run a single test file by passing the bin/rails test command the filename containing the test cases. This will run all test methods from the test case.

What is unit test rails?

The Tests − They are test applications that produce consistent result and prove that a Rails application does what it is expected to do. Tests are developed concurrently with the actual application. The Assertion − This is a one line of code that evaluates an object (or expression) for expected results.

How do you run a Minitest in rails?

To run a Minitest test, the only setup you really need is to require the autorun file at the beginning of a test file: require 'minitest/autorun' . This is good if you'd like to keep the code small. A better way to get started with Minitest is to have Bundler create a template project for you.


2 Answers

While the ruby community is known by its focus on testing, every case should be analyzed in context to figure out what the most cost-effective decisions are.

It is useful to think of tests as a technique to manage risk. If you don't think that displaying titles/adding them to the database is a task that is error-prone, complex to perform, or that the cost of adding those tests is higher than the risk of eventually breaking something, them it might be wise to not do it.

That said, since you said that you are new to testing, I would recommend (if you are not time-constrained, of course) to try to take the idea to the extreme of testing absolutely everything, so that you can have an idea of how much of it adds value, and how much is waste of time.

You might want to take a look at this blog post from DHH, the creator of Rails, where he talks about that: Testing like the TSA

About testing gems, it is generally well-accepted that they shouldn't be tested by your application tests, but by their creators. Most of the time you can simply assume that they work the ways they promise.

like image 102
Renato Zannon Avatar answered Oct 17 '22 07:10

Renato Zannon


one of the main concepts of testing is: "It's impossible to test everything"

like image 1
itaka Avatar answered Oct 17 '22 06:10

itaka