Ruby - Прохождение теста - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь пройти этот тест и не знаю, как пройти этот тест.

TEST

def test_it_is_thirsty_by_default
  vampire = Vampire.new("Count von Count")
  assert vampire.thirsty?
end

def test_it_is_not_thirsty_after_drinking
  vampire = Vampire.new("Elizabeth Bathory")
  vampire.drink
  refute vampire.thirsty?
end

КОД

def thirsty?
  true
end

def drink
  thirsty? === false
end

В последнем тесте выдается сообщение об ошибке:

Failed refutation, no message given

Чего мне не хватает? Я думаю, что изначально вампир испытывает жажду (правда), а затем определил метод, который затем сделает вампира не испытывающим жажду (ложь).

EDIT

Даже если я переназначу метод питья на:

thirsty? = false

Я получаю синтаксическую ошибку, указывающую на знак =.

1 Ответ

1 голос
/ 03 июня 2019

Вам не хватает пары вещей, и, самое главное, какого-то метода записи, который позволяет сохранить тот факт, что @thirsty обновляется внутри вашего drink вызова метода

Есть несколько способов сделать это, но я показал один ниже с несколькими примечаниями:

require 'test/unit'

class Vampire
  def initialize(name)
    @name = name
    @thirsty = true # true by default
  end

  def drink
    @thirsty = false # updates @thirsty for the respective instance
  end

  def thirsty?
    @thirsty
  end
end

class VampireTests < Test::Unit::TestCase
  def test_it_is_thirsty_by_default
    vampire = Vampire.new("Count von Count")
    assert vampire.thirsty?
  end

  def test_it_is_not_thirsty_after_drinking
    vampire = Vampire.new("Elizabeth Bathory")
    vampire.drink
    refute vampire.thirsty?
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...