Рубин: TDD Plus Coding - PullRequest
       2

Рубин: TDD Plus Coding

0 голосов
/ 15 мая 2018
gem 'minitest', '~> 5.2'
# TDD

require 'minitest/autorun'
require 'minitest/pride'
require_relative 'kid'

class KidTest < Minitest::Test
  def test_kid_has_not_eaten_sugar
    kid = Kid.new
    assert_equal 0, kid.grams_of_sugar_eaten
  end

  def test_kid_gets_5_grams_from_eating_candy

    kid = Kid.new
    kid.eat_candy
    assert_equal 5, kid.grams_of_sugar_eaten

    5.times { kid.eat_candy }
    assert_equal 30, kid.grams_of_sugar_eaten
  end

  def test_kid_is_not_hyperactive

    kid = Kid.new
    refute kid.hyperactive?
  end

  def test_kid_is_hyperactive_after_60_grams_of_sugar

    kid = Kid.new
    11.times { kid.eat_candy }
    refute kid.hyperactive?, "Not hyperactive yet..."
    kid.eat_candy
    assert kid.hyperactive?, "OK, now the kid is hyperactive."
  end
end

# CODE

class Kid
  attr_reader :grams_of_sugar_eaten


  def initialize
    @grams_of_sugar_eaten = 0
  end

  def eat_candy(grams = 5)
    @grams_of_sugar_eaten += grams
  end

  def hyperactive?
    false
  end
end

Может ли кто-нибудь помочь мне подумать, что мне нужно подумать, как пройти второй тест и так далее?

Я не уверен, что делать, чтобы пройти тест после того, как ребенок съел 5 граммов сахара, а затем через 5 раз, чтобы сдать его после того, как он съел 30 граммов сахара.

Ценю любую помощь

1 Ответ

0 голосов
/ 15 мая 2018

Вы добавили eat_candy как attr_reader, а не как метод. Функция initialize здесь устанавливает eat_candy на себя.

Возможное исправление:

class Kid
  attr_reader :grams_of_sugar_eaten

  def initialize
    @grams_of_sugar_eaten = 0
  end

  def eat_candy(grams = 5)
    @grams_of_sugar_eaten += grams
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...