2

HTTParty の応答オブジェクトは#parsed_response、参照されると返されるようです。例えば:

response = HTTParty.get(some_url)
response                 # => { some: 'random', stuff: 'in here' }
response.parsed_response # => { some: 'random', stuff: 'in here' }

また、クラスを確認するとresponse、ハッシュではなく応答オブジェクトです

response.class # => HTTParty::Response

responseこれは、 likeで他のことを確認できるので便利です。response.codeまた、単に応答を参照して を取得するのにも非常に便利parsed_responseです。

自分のクラスでこのようなことを行うにはどうすればよいですか? しかし、クラスを参照するときにハッシュを返すのではなく、文字列を返すようにします。

これが私がやりたいことの具体的な例です:

not_a_string = MyClass.new('hello', [1, 2, 3])
not_a_string        # => 'hello'
not_a_string.stuff  # => [1, 2, 3]

したがって、rspec では、テストは次のようにパスする必要があります。

not_a_string = MyClass.new('hello', [1, 2, 3])
not_a_string.should == 'hello'  # passes
4

3 に答える 3

1

inspectあなたの目的のためには、定義するだけで十分==です:

class Test
  def initialize(string)
    @string = string.to_s
  end

  def inspect
    @string.inspect
  end

  def ==(other)
    @string == other
  end
end

t = Test.new 'asd' #=> "asd"
t #=> "asd"
t == 'asd' #=> true
于 2013-06-25T10:06:42.423 に答える
0

ええ、これは素晴らしい機能です :) あなたがしなければならないことは、inspect メソッドを作成することだけです ;) ここに例があります:

class Greeter
  def initialize(name)
    @name = name.capitalize
  end

  def salute
    puts "Hello #{@name}!"
  end

  def inspect
    "hey"
  end
end


g = Greeter.new 'world'
g  # hey

乾杯 !

于 2013-06-25T10:10:41.627 に答える