Last week, I mentioned that I would like to focus on testing input with RSpec. This week’s task provided the perfect opportunity to do so.
The task: Contact manager
The aim was to create a command line program to store, search and view the contacts, with the following features:
- Core: User should be able to enter a contact (name, email, phone number)
- Core: User should be able to see a list of all of my contacts in alphabetical order
- Core: User should be able to search for a contact by name and view their details
- Stretch goal: Save the contacts to a file
- Stretch goal: Load the contacts from that file when restarting the program
Testing user input
With the first feature (user should be able to enter a contact), I imagined the user would need to provide input.
I stumbled across a post on Stack Overflow — using RSpec to test user input with gets. The key part here was using a stub for gets.
Multiple inputs also needed to be simulated. I came across a post on Stack Overflow related to this.
Using the last post as a guide, I created a new test. That didn’t work as expected, however this showed I could have multiple inputs. Using the first example from Slack Overflow, I combined this with the second to come up with the following test:
Things I've learned
- Testing input with RSpec and multiple inputs
Things I've struggled with
- 🤷🏽♀️
Things I want to focus on
- Uncovering what else can be tested with RSpec
Discussion