Rspec测试在传递命名参数时始终失败

时间:2018-09-23 05:03:33

标签: ruby rspec

对不起,.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 :(得分:0)

测试期望您的new方法接受带有name键和值的哈希。该类并非仅用名称进行初始化。

但是在您的类中,您需要使用所有参数(键加值)并将其分配给@name变量。

通过此测试的最简单方法是在initialize方法中使用关键字参数。

更改

def initialize(name)

def initialize(name:)

详细了解kwags - keyword arguments