如何检索 RSpec::Expectations::ExpectationTarget: @target 的值?

its*_*tsh 3 ruby rspec

我有一个返回哈希值的 ruby​​ 方法。我的此方法的 Rspec 如下所示:

require "java"
require "rubygems"
require 'rspec'
require 'spec_helper'
require_relative '../src/lib/my_class.rb'

describe MyMod::Myclass do
  before(:all){
                @my_obj = MyMod::Myclass.new
              }


it "" do
  expect(@my_obj.get_hash_info(city)).should == {"name"=>"NY", "zip"=>"1234"}
  puts "get_hash_info method test case PASSED"
end
end
Run Code Online (Sandbox Code Playgroud)

但它通过给出以下消息而出错:

   Failure/Error: expect(@my_obj.get_hash_info(city)).should == {"name"=>"NY", "zip"=>"1234"}

   expected: {"name"=>"NY", "zip"=>"1234"}
        got: #<RSpec::Expectations::ExpectationTarget:0x6339e604 @target={"name"=>"NY", "zip"=>"1234"}> (using ==)
   Diff:
   @@ -1,7 +1,9 @@
   -"name"=>"NY",
   -"zip"=>"1234",
   +#<RSpec::Expectations::ExpectationTarget:0x6339e604
   + @target=
   +  {"name"=>"NY",
   +   "zip"=>"1234"}>
Run Code Online (Sandbox Code Playgroud)

我需要帮助来检索 的值,RSpec::Expectations::ExpectationTarget:0x6339e604 @target以便将其与预期的哈希值进行比较。

谢谢。

Ste*_*zyn 5

不要将期望与should参数 混合在一起expect创建期望目标对象。should是一个猴子方法,被修补rspec到块中的所有对象中it

你可以做...

@my_obj.get_hash_info(city).should == {"name"=>"NY", "zip"=>"1234"}
Run Code Online (Sandbox Code Playgroud)

或者你可以做...

expect(@my_obj.get_hash_info(city)).to eq {"name"=>"NY", "zip"=>"1234"}
Run Code Online (Sandbox Code Playgroud)