Rspec的控制器测试分配二维散列失败

问题描述:

我想要运行一个控制器测试: 控制器代码是Rspec的控制器测试分配二维散列失败

def aix_service_accounts 
    @no_dn_users= Hash.new 
    record = 0 
    @no_dn_users[record]= Hash.new 
    @no_dn_users[record]['aix_username'] ="abc" 
end 

的rspec的代码是

it "should show aix_service_accounts" do 
    get :aix_service_accounts 
    expect(assigns(:no_dn_users[0]['aix_username'])).to eq 'abc' 
    end 

结果是

Failures:

1)AixController应显示aix_service_accounts Failu RE /错误:期待(受让人(:no_dn_users [0] [ 'aix_username'])),以EQ 'ABC'

expected: "abc" 
     got: {"marked_for_same_origin_verification"=>true, "no_dn_users"=>{0=>{"aix_username"=>"abc"}}} 

    (compared using ==) 

    Diff: 
    @@ -1,2 +1,3 @@ 
    -"abc" 
    +"marked_for_same_origin_verification" => true, 
    +"no_dn_users" => {0=>{"aix_username"=>"abc"}}, 

# ./spec/controllers/aix_controller_spec.rb:29:in `block (2 levels) in <top (required)>' 
莫非

任何人的帮助,并说明理由给我?谢谢!

当然 - 你试图从指定要求一个名为:no_dn_users[0]['aix_username']的钥匙。您需要将其更改为:

assigns(:no_dn_users)[0]['aix_username'] 

改为。

即由关键:no_dn_users走出的第一部分,这将是哈希内包括阵列,你再使用索引

+1

感谢泰伦引用,你是绝对正确的。 –