The Second Test

One nice feature of test-driven development is that making one test pass often points the way to the next test. The goal of the next test cycle is to write a test that fails given the current code. At this point the code says that done? is always true, so you should create a case where done? is false:

 it ​"knows that a project with an incomplete task is not done"​ ​do
  project = Project.new
  task = Task.new
  project.tasks << task
  expect(project.done?).to be_falsy
 end

This test is similar to the first one, but now you have a second class, Task, and a related attribute of the Project class, tasks. This time you’re assuming that a new task is undone, and therefore a project with an ...

Get Rails 5 Test Prescriptions now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.