Write the test backwards

When writing a test, something that I like to do is start by writing the first assertion first, and then work backwards.

My first assertion might be self::assertTrue($result).

If I ran this test, it would fail because of the undefined $result variable - but it's clear to me what I need next by asking, "Where does $result come from?".

If I need to call a method on another class and get the result, I'll add it before the assertion. Then I repeat the process and ask, "What do I need for this to work?".

Maybe I need to create some users or content in the application for the class to query and return a result based on it, so I'll create those.

With this approach, I'm not making any assumptions about the test's prerequisites, and I usually find that I end up with cleaner and more focused tests.

- Oliver

P.S. Are you still using Drupal 7 and don’t know what’s involved to upgrade to Drupal 10? Book a Drupal 7 upgrade consultation call or an upgrade roadmap.

Was this useful?

Sign up here and get more like this delivered straight to your inbox every day.

About me

Picture of Oliver

I'm an Acquia-certified Drupal Triple Expert with 17 years of experience, an open-source software maintainer and Drupal core contributor, public speaker, live streamer, and host of the Beyond Blocks podcast.