Использование TDD / CODE, чтобы помочь этому студенту пройти - РУБИН - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь выполнить упражнение TDD.Мне удалось сделать первый тестовый проход:

def test_grade_is_mediocre
  student = Student.new
  assert_equal 'C', student.grade
end

При реализации этого кода:

class Student
  attr_reader :grade


  def initialize(grade = "C")
    @grade = grade
  end

  def study
  end
end

Но я застрял во втором тесте:

def test_grade_can_improve
  student = Student.new
  student.study
  assert_equal "B", student.grade
  student.study
  assert_equal "A", student.grade
end

Может ли кто-нибудь направить меня в правильном направлении относительно того, как реагировать на изменения в классе после обучения ученика?У меня есть пропуск grade = "C" в качестве аргумента для прохождения первого теста, и я знаю, что мне нужно определить метод study, но я застрял в попытке выяснить, как решить, как ученик повышает свои оценки после того, как он однажды учится, ипотом дважды.Нужно ли устанавливать какой-то счетчик?

1 Ответ

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

Вы можете использовать выражение if:

def study
  if grade == 'C'
    @grade = 'B'
  elsif grade == 'B'
    @grade = 'A'
  end
end

или - чуть более кратко - выражение case:

def study
  case grade
  when 'C'
    @grade = 'B'
  when 'B'
    @grade = 'A'
  end
end

Обратите внимание, что я использую метод получения grade до чтения значения и переменной экземпляра @grade до назначения нового значения.

Другой подход заключается в использовании какого-либо вида отображения, например, через tr!:

def study
  @grade.tr!('BC', 'AB')
end

Он заменяет символы в первом аргументе соответствующими символами во втором аргументе, т.е.'B' с 'A' и 'C' с 'B'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...