Bird
Raised Fist0
Rubyprogramming~5 mins

Test-driven development workflow in Ruby - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the first step in the Test-driven development (TDD) workflow?
Write a failing test that defines a new function or improvement before writing the actual code.
Click to reveal answer
beginner
Why do you write a failing test first in TDD?
To clearly define what the code should do and ensure the test fails because the feature is not implemented yet.
Click to reveal answer
beginner
What comes after writing a failing test in the TDD cycle?
Write the minimum amount of code needed to make the test pass.
Click to reveal answer
intermediate
What is the purpose of the 'refactor' step in the TDD workflow?
To clean up and improve the code without changing its behavior, ensuring it remains simple and maintainable.
Click to reveal answer
intermediate
In TDD, what should you do if a test fails after refactoring?
Fix the code so the test passes again, ensuring the refactoring did not break functionality.
Click to reveal answer
What does the 'Red' phase in TDD mean?
ARunning all tests successfully
BWriting a failing test
CRefactoring code
DWriting production code
Which step follows after making a failing test pass in TDD?
ADeploy the code
BWrite more tests
CRefactor the code
DWrite documentation
Why is TDD considered helpful?
AIt forces you to write code without tests
BIt eliminates the need for debugging
CIt speeds up writing code without tests
DIt helps catch bugs early and improves code design
What should a test do in TDD before you write the code?
AFail initially
BPass immediately
CBe skipped
DRun slowly
In TDD, what is the main goal of the 'Refactor' step?
AImprove code without changing behavior
BAdd new features
CFix bugs
DWrite more tests
Describe the three main steps of the Test-driven development workflow and why each is important.
Think of TDD as Red-Green-Refactor cycle.
You got /4 concepts.
    Explain how Test-driven development helps improve software quality and developer confidence.
    Focus on benefits of writing tests before code.
    You got /4 concepts.

      Practice

      (1/5)
      1. In Ruby's test-driven development (TDD) workflow, what is the first step you should do?
      easy
      A. Run all tests to check for errors
      B. Write a failing test that defines the desired behavior
      C. Refactor the existing code
      D. Write the full implementation code

      Solution

      1. Step 1: Understand the TDD cycle

        The TDD cycle starts by writing a test that fails because the feature is not implemented yet.
      2. Step 2: Identify the first action in TDD

        Writing a failing test first guides the development and ensures the code meets requirements.
      3. Final Answer:

        Write a failing test that defines the desired behavior -> Option B
      4. Quick Check:

        First step in TDD = Write failing test [OK]
      Hint: Remember: Test first, code second in TDD [OK]
      Common Mistakes:
      • Starting by writing implementation code before tests
      • Refactoring before any test is written
      • Running tests before any code or test exists
      2. Which Ruby command runs all tests in a typical TDD workflow using Minitest?
      easy
      A. rails server
      B. rspec test_file.rb
      C. ruby test_file.rb
      D. bundle install

      Solution

      1. Step 1: Identify the test framework command

        Minitest tests are run by executing the Ruby test file directly with ruby test_file.rb.
      2. Step 2: Eliminate unrelated commands

        rspec is for RSpec tests, rails server starts the server, and bundle install installs gems.
      3. Final Answer:

        ruby test_file.rb -> Option C
      4. Quick Check:

        Run Minitest with ruby test_file.rb [OK]
      Hint: Run tests by executing test files with ruby [OK]
      Common Mistakes:
      • Using rspec command for Minitest tests
      • Confusing server start with test run
      • Running bundle install instead of tests
      3. Given this Ruby test and code, what will be the test output?
      require 'minitest/autorun'
      
      class Calculator
        def add(a, b)
          a + b
        end
      end
      
      class TestCalculator < Minitest::Test
        def test_add
          calc = Calculator.new
          assert_equal 5, calc.add(2, 3)
        end
      end
      medium
      A. 1 test, 0 failures
      B. 1 test, 1 failure
      C. SyntaxError
      D. No tests run

      Solution

      1. Step 1: Analyze the test and method

        The add method returns the sum of two numbers. The test expects 5 from adding 2 and 3.
      2. Step 2: Check if test passes

        Since 2 + 3 equals 5, the assertion passes and the test succeeds.
      3. Final Answer:

        1 test, 0 failures -> Option A
      4. Quick Check:

        Correct sum = test passes [OK]
      Hint: If method matches test expectation, test passes [OK]
      Common Mistakes:
      • Thinking test fails when it actually passes
      • Confusing syntax error with test failure
      • Ignoring the assert_equal expected value
      4. What is wrong with this TDD workflow snippet in Ruby?
      class TestCalculator < Minitest::Test
        def test_multiply
          calc = Calculator.new
          assert_equal 6, calc.multiply(2, 3)
        end
      end
      
      class Calculator
        def multiply(a, b)
          a - b
        end
      end
      medium
      A. The test method name is incorrect
      B. assert_equal arguments are reversed
      C. Calculator class is missing
      D. The multiply method subtracts instead of multiplies

      Solution

      1. Step 1: Compare method implementation with test expectation

        The test expects multiply(2, 3) to return 6, but the method subtracts a - b.
      2. Step 2: Identify the error cause

        Subtracting 2 - 3 gives -1, which will fail the test expecting 6.
      3. Final Answer:

        The multiply method subtracts instead of multiplies -> Option D
      4. Quick Check:

        Method logic must match test expectation [OK]
      Hint: Check method logic matches test assertions [OK]
      Common Mistakes:
      • Confusing subtraction with multiplication
      • Ignoring method implementation details
      • Assuming test method name affects test result
      5. You want to safely improve your Ruby code after passing tests. Which TDD step lets you do this without breaking functionality?
      hard
      A. Refactor the code while running tests frequently
      B. Write new tests before changing code
      C. Run tests only after all changes are done
      D. Delete old tests to simplify code

      Solution

      1. Step 1: Understand the role of refactoring in TDD

        Refactoring means improving code structure without changing behavior, done safely with tests as a safety net.
      2. Step 2: Identify the correct practice

        Running tests frequently during refactoring ensures no functionality breaks.
      3. Final Answer:

        Refactor the code while running tests frequently -> Option A
      4. Quick Check:

        Refactor + frequent tests = safe improvements [OK]
      Hint: Refactor with tests running often to catch errors [OK]
      Common Mistakes:
      • Running tests only after all changes
      • Deleting tests which protect code quality
      • Writing tests after refactoring instead of before
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard