Rspec测试ActiveAdmin创建操作

时间:2015-10-19 21:08:04

标签: ruby-on-rails ruby rspec activeadmin

我的rails应用程序的模型Institution只能创建AdminUser。我的app/admin/institution.rb文件如下所示:

ActiveAdmin.register Institution do

  permit_params :name, :email

  index do
    id_column
    %W(name email).each do |field|
      column field.to_sym
    end
    actions
  end

  form do |f|
    f.inputs do
      f.input :name
      f.input :email
      f.actions
    end

  end

end

和创建机构的相应路线是POST /admin/institutions

有没有一种简单的方法可以在rspec中测试这条路线/动作?关于测试ActiveAdmin的在线资源非常少。我能找到的只有thisthisthis,其中最后一个似乎与我要找的最接近,但并不完全正确。

我只想要一种方法来测试POST /admin/institutions端点,只传递两个必需的参数(名称和电子邮件)。但是,以下rspec测试失败:

describe Admin::InstitutionsController, :type => :controller do

  before(:each) do
    @user = FactoryGirl.create(:admin_user)
    sign_in @user
  end

  it 'creates an institution' do
    post :create, name: "test_name", email: "test@email.com"
    expect(Institution.all.count).to eq(1)
  end

end

没有机构正在创建,但我没有收到任何错误。任何帮助表示赞赏,谢谢。

-Greg

1 个答案:

答案 0 :(得分:2)

尝试使用institution键对参数进行命名。在大多数资源 在Rails中基于表单的表单字段按模型的名称分组。试试以下内容:

it 'creates an institution' do
  post :create, institution: { name: "test_name", email: "test@email.com" }
  expect(Institution.all.count).to eq(1)
end

原因是表单如何将这两个字段呈现为文本输入(检查HTML源代码)。字段的名称应为:

  • institution[name]
  • institution[email]