如何通过rspec和rails 3控制器规范中的复选框集合值3

使用rails 3和rspec。我有一个形式,这样的观点..如何通过rspec和rails 3控制器规范中的复选框集合值3

<%= form_for current_account, { :url => admins_account_path(current_account), :method => 'put' } do %> 

<div class="action">

<%= submit_tag "Save" %>

</div>

<table>

<tbody>

<% @accountships.each do |accountship| %>

<tr>

<td><%= check_box_tag "accountship_ids[]", accountship.id, accountship.admin? %></td>

<td><%= accountship.user.name %>

</tr>

<% end %>

</tbody>

</table>

<% end %>

和Controller,我处理与应收#update_admin这种方法PUT。这一切都按预期工作。

@account.assign_administrators params[:accountship_ids] 

我的问题是我如何构建rspec中的参数来测试该控制器的行为。我到目前为止所尝试的都不起作用。这是我的最新尝试不起作用。

before(:each) do 

# code that generates the ids, I know this is working from other tests ..

.

.

.

@attr = {

:accountship_ids => [

@admin_accountship.id,

@not_admin_accountship.id,

@signed_in_user_accountship.id

]

}

end

it "should assign admin to users in the list" do

# what should I be passing in as @attr?

put :update_admins, :id => @account, :accountship_ids => @attr

Accountship.find(@admin_accountship.id).admin.should be_true

Accountship.find(@owner_accountship.id).admin.should be_true

Accountship.find(@not_admin_accountship.id).admin.should_not be_true

end

所有的测试,我已经能够编写需要从形式复选框收集是失败的值,这是显而易见的是,当RSpec的测试发布的数据whatever_accountship.admin属性不被更新。

在此先感谢!

EDIT

我偶然到该溶液中。数组不应该包含在散列中,并且数组文本中的值需要首先转换为字符串,如下所示。

@attr = [ 

@admin_accountship.id.to_s,

@not_admin_accountship.id.to_s,

@signed_in_user_accountship.id.to_s

]

任何人都明白,为什么他们需要字符串时,其他测试中,我已经可以接受(无需字符串)一个成熟的对象?

另外,我现在对我的问题做了什么,我知道答案?

回答:

它看起来像你分配的params散列实例变量,然后作出的第一个哈希值作为值并传递整个混乱在put声明,当你所需要做的是通过原始参数。或者换句话说:

put :update_admins, :id => @account.id, @attr

编辑

对不起,漫长的一天。 】这个params需要进入一个哈希后的动作,所以:

put :update_admins, {:id=>@account.id}.merge(@attr)

EDIT 2

如果您在数组中传递字符串的哈希语法将工作:

@attr = { 

:accountship_ids => [

@admin_accountship.id.to_s,

@not_admin_accountship.id.to_s,

@signed_in_user_accountship.id.to_s

]

}

如果你想用自己的答案解决问题,我认为你可以创建一个答案然后接受它。

以上是 如何通过rspec和rails 3控制器规范中的复选框集合值3 的全部内容, 来源链接: utcz.com/qa/262059.html

回到顶部