Ruby - Как мне обратиться к аргументам в методе?Тест не пройдет - PullRequest
0 голосов
/ 20 мая 2018

TDD

gem 'minitest', '~> 5.2'
require 'minitest/autorun'
require 'minitest/pride'
require_relative '../lib/costume'
require_relative '../lib/bag'
require_relative '../lib/candy'
require_relative '../lib/trick_or_treater'

class TrickOrTreaterTest < Minitest::Test
 def test_wears_a_costume
  costume = Costume.new("Cowboy")
  trick_or_treater = TrickOrTreater.new(costume)
  assert_equal "Cowboy", trick_or_treater.dressed_up_as
 end

 def test_wears_a_different_costume

  costume = Costume.new("Pony")
  trick_or_treater = TrickOrTreater.new(costume)
  assert_equal "Pony", trick_or_treater.dressed_up_as
 end

КОД

class TrickOrTreater
 attr_reader :dressed_up_as

 def initialize(costume = "Cowboy")
  @dressed_up_as = dressed_up_as
 end
end

Почему это не касается первых двух тестов?Я передал аргумент костюма, назначенного «Ковбою», который должен позаботиться о первом тесте, а также о втором.Я что-то упустил?

1 Ответ

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

Я думаю, вы бы хотели что-то более подобное.Поскольку вы получаете костюм, вы, вероятно, должны хранить его как переменную экземпляра costume.Затем вы должны вернуть из метода dress_up_as тип костюма.Класс Costume не виден, поэтому не знаю, как его получить, поэтому просто укажите .type.

Проблема с хранением вещей по-вашему связана с тем, что вы попадаете в объект костюма, а тест, похоже, требуетстрока.Кроме того, вы намереваетесь получить объект костюма, но вашим значением по умолчанию является строка Cowboy.

class TrickOrTreater

 def initialize(costume)
   @costume = costume
 end

 def dressed_up_as 
   @costume.type
 end

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