Как применять операторы if / then для опровержения / утверждения методов - PullRequest
0 голосов
/ 19 мая 2018

TDD

gem 'minitest', '~> 5.2'
require 'minitest/autorun'
require 'minitest/pride'
require_relative 'light'

class LightTest < Minitest::Test
 def test_light_is_off
  light = Light.new
  refute light.on?
 end

 def test_turn_light_on

  light = Light.new
  light.turn_on
  assert light.on?
 end
end

CODE

class Light

 def on?
  false
 end

 def turn_on
  true
 end
end

Я знаю, что это очень просто, если я пытаюсь пройти тест, но чего мне не хватает?

Так что в основном говорится, что свет изначально выключен, затем, после того как вы определите и вызовете метод turn_on, свет должен быть включен.Итак, первый тест должен быть ложным, а второй тест должен быть истинным после запуска метода.

По какой-то причине я не знаю, как сделать это в коде.

1 Ответ

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

Состояние освещения - это состояние объекта.

В Ruby состояние объекта сохраняется в переменных экземпляра.

Начальное состояние задается в инициализаторе.

Вот ваш полный Light класс:

class Light
  def initialize
    @light = false
  end

  def on?
    @light
  end

  def off?
    !on?
  end

  def turn_on
    @light = true
  end

  def turn_off
    @light = false
  end
end
...