O'Reilly logo

RESTful Rails Development by Silvia Puglisi

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 7. Testing RESTful Services

Testing RESTful services can be a difficult task that goes beyond just testing pieces of code. A service is in fact composed of different components, and in order to test its functionality, the interactions between these components need to be tested.

Most of the time, when testing techniques are introduced, we learn how to test if a given method actually returns the expected results for a given input or set of inputs.

Testing services requires instead that we test how our service interacts with Amazon AWS, or with external APIs, or with our own load balancer. This includes testing testing how all other services interacting with our APIs react to certain error codes or specific responses.

Testing in Rails

We learned in Chapter 2 that the Rails framework was built to allow test–driven development (TDD) from the beginning. Rails in fact creates a test folder as soon as a new Rails project is created. If you list the contents of this folder you will find that a different subfolder is created for each component of the application, so that tests can be structured accordingly:

$ ls test
controllers    fixtures    helpers        integration    
mailers        models      test_helper.rb

Testing models in a Rails app usually means unit testing. With unit testing the smallest testable parts of your Rails application—the models, in this case—are tested individually and independently, to ensure that the defined methods work as expected.

Functional testing tests ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required