Ruby on rails 如何使用RSpec测试覆盖ActiveAdmin资源的一部分?

Ruby on rails 如何使用RSpec测试覆盖ActiveAdmin资源的一部分?,ruby-on-rails,rspec,activeadmin,Ruby On Rails,Rspec,Activeadmin,我检查了由simplecov创建的覆盖范围文件,我看到了如下未覆盖区域: form do |f| inputs 'Details' do input :email, required: true input :password, input_html: { value: t('empty_string') }, required: true input :is_active, label: t('active') input

我检查了由simplecov创建的覆盖范围文件,我看到了如下未覆盖区域:

   form do |f|
     inputs 'Details' do
       input :email, required: true
       input :password, input_html: { value: t('empty_string') }, required: true
       input :is_active, label: t('active')
       input :slug
       input :name
       input :logo, as: :file
     end
     actions
   end
我该怎么处理


更新:渲染视图有助于避免未覆盖区域。

要让SimpleCov检测ActiveAdmin表单DSL的覆盖范围,您需要为编辑操作创建控制器测试。最好为创建和更新操作添加覆盖范围,以确保
allowed_params
未过滤特定属性。我已经包括了AdminUser模型的编辑和更新操作的规范

# spec/controllers/admin/users_controller_spec.rb
require 'rails_helper'
include Devise::TestHelpers

RSpec.describe Admin::AdminUsersController, type: :controller do
  render_views

  let(:admin_user) { AdminUser.create!(email: 'admin@example.com', password: 'password')}

  before(:each) do
    sign_in admin_user
  end

  describe 'edit' do
    it 'renders user form' do
      get :edit, id: admin_user.to_param
      expect(assigns(:admin_user)).to eq admin_user
    end
  end

  describe 'update' do
    it 'updates user' do
      patch :update, { id: admin_user.to_param, admin_user: { email: 'nimda@example.com' }}
      admin_user.reload
      expect(admin_user.email).to eq 'nimda@example.com'
    end
  end
end

好像你会用水豚做些什么。访问该页面,填写表单并单击提交。验证是否发生了一些事情。我明白了,但我真的很讨厌UI测试,你知道其他的方法吗?因为表单是一个UI功能,我不知道你还能如何测试它。不过我可能错了。