Тест Rspec продолжает сбой при передаче именованного параметра - PullRequest
0 голосов
/ 23 сентября 2018

Заранее извините .... вопрос noob.

Я пишу класс, чтобы выполнить тест Rspec.Это тест для инициализации класса и передачи строкового параметра.Моя задача состоит в том, чтобы тест проходил с параметром имени, а вывод не прошел мой тест.

Код ниже.

Мой класс

module Human
  class Person
    attr_reader :name

    def initialize(name)
       @name = name
    end
  end
end

Мой тест

RSpec.describe Person::Name do
  subject { described_class.new(name: "Hi my name is peter") }

  it "has a name" do
    expect(subject.name).to eq("Hi my name is peter")
  end

Результат

Human::Person has a name
     Failure/Error: expect(subject.name).to eq("Hi my name is peter")

       expected: "Hi my name is peter"
            got: {:name=>"Hi my name is peter"}

       (compared using ==)

Моя проблема в том, что мой класс работает, но мой вывод отформатирован по-другому {:name=>"Hi my name is peter"} .... это должно быть "Hi my name is peter"

Как заставить мой класс возвращать вывод строки, как и ожидалось моим тестом?

1 Ответ

0 голосов
/ 23 сентября 2018

Тест ожидает, что ваш метод new принимает хеш с ключом name и значением.Класс не инициализируется только именем.

Но в вашем классе вы берете все аргументы (ключ плюс значение) и присваиваете его переменной @name.

Самый простой способсделать этот тестовый проход значит использовать аргументы ключевых слов в вашем initialize методе.

Изменить

def initialize(name)

на

def initialize(name:)

Подробнее о kwags- ключевые аргументы .

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