rspec --innit;在.bash_profile不工作

时间:2017-02-24 02:26:09

标签: ruby hash rspec keyword

为什么我无法访问实例变量?

let(:hotel2) { Hotel.new name: 'Premier Inn', rating: 1, 
                 city: 'Leeds', total_rooms: 15, features: [] }

我在初始化中调用它但它不断抛出不正确的参数错误。

def initialize()
    @name = name
    @rating = rating
    @city = city
    @total_rooms = total_rooms
    @features = features
  end

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您的初始化签名与您的主叫签名不符。您正在传递哈希,但没有收到哈希。有许多方法可以定义参数列表以使其工作。这是一个:

class Hotel
  def initialize(hash)
    @name = hash[:name]
    @rating = hash[:rating]
    @city = hash[:city]
    @total_rooms = hash[:total_rooms]
    @features = hash[:features]
  end
end

This blog post概述了如何使用Ruby V2关键字参数。这将是定义initialization的另一种可能更好的方法。这是一个例子:

class Hotel
  def initialize(name: , rating:, city:, total_rooms:, features:)
    @name = name
    @rating = rating
    @city = city
    @total_rooms = total_rooms
    @features = features
  end
end

您可以为关键字参数设置默认值并使其成为必需参数。在这个例子中,它们都是强制性的。