Contract tests

"Integration Tests are a Scam" Joe Rainsberger

Topalov Alex @sharkzp


  1. The larger application the larger amount of time you need to test it.
  2. The more integration(end-to-end) test you wrote the more duplication you involve.
  3. When integration test fails who knows what part of code is broken. 

Object under test

Object under test diagram, by Sandi Metz

What does it mean?


Goals of unit tests

  1. Thorough: must prove completely that the single object under test is behaving correctly
  2. Stable: must not break with an implementation detail change
  3. Fast: minimize development feedback loop
  4. Few: Each test should prove one unitary behaviour of public interface

If Unit test intend to test only one object, and integration tests does not provide great feedback what we should do?

Testing Pyramid

Solution: Contact test

Goal of contract test:

1. Thorough: you must prove that contract between two objects behaving correctly
2. Stable: should not say how objects should behave, should expect correct answer instead.
3. Fast: minimize development feedback loop
4. FewEach test should prove one unitary behaviour of public interface



  1. J. B. (Joe) Rainsberger - Integration Tests Are a Scam
  2. Ruby Conf 12 - Boundaries by Gary Bernhardt
  4. Clean code - Robert C. Martin
  5. Bogus

Contract tests

By sharkzp

Contract tests

  • 1,270
Loading comments...

More from sharkzp