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
走出的第一部分,这将是哈希内包括阵列,你再使用索引
感谢泰伦引用,你是绝对正确的。 –