Невозможно найти поля, которые не отключены - PullRequest
0 голосов
/ 11 февраля 2020

Так что в настоящее время я делаю некоторые тесты с использованием capybara и rspe c, у меня появляется эта ошибка messgae

Проверка пользователей не удалась: имя не может быть пустым, фамилия не может быть пустым, сгенерированный системой пароль не может быть пустым. Capybara запускает Puma ... * Версия 3.11.4, кодовое имя: Love Song * Мин. потоков: 0, Макс. потоков: 4 * Прослушивание по tcp: //127.0.0.1: 42509 Невозможно найти видимое поле "first_name", которое не отключено. Создает нового пользователя.

Ниже приведен мой _form. html .haml код:

panel-body
  = simple_form_for @user do |f|
    .form-inputs
      .col-md-6
        = f.input :first_name, label: I18n.t('user.first_name')
        = f.input :middle_name, label: I18n.t('user.middle_name')
        = f.input :last_name, label: I18n.t('user.last_name')
        = f.input :username, label: I18n.t('user.username')

      .col-md-6
        - if current_user.role? "Administrator"
          = f.input :user_role, label: I18n.t('user.role'), collection: User::ROLES, include_blank: false
        - else
          = f.input :user_role, label: I18n.t('user.role'), collection: User::ROLES, include_blank: false, disabled: true
          = f.hidden_field :user_role

    .col-md-12
      .form-actions
        - if @user.new_record?
          = f.button :submit, I18n.t('user.create_user'), class: "btn btn-primary"
          = link_to I18n.t('cancel'), users_path, class: "btn btn-default"
        - else
          = f.button :submit, I18n.t('user.update_user'), class: "btn btn-primary"
          = link_to I18n.t('cancel'), user_path(@user), class: "btn btn-default"

А вот мой тест функций (spec / features / users / create_user.rb):

require 'rails_helper'

RSpec.feature "Users", :type =>
:feature do
    before do
        begin
         
         login_as(FactoryBot.create(:user, :admin)) # assumes you have a factory named `admin` that will create a user with the permissions to create other users
        
        rescue StandardError => e
            puts "#{e.message}"
        end
    end
   
    it "Creates a new User" do
        begin
           visit "users/"
            
                new_user = FactoryBot.build(:user) 

                fill_in "first_name", with: I18n.t('new_user.first_name') #new_user.first_name
                fill_in "middle_name", with: I18n.t('new_user.middle_name')#new_user.middle_name
                fill_in "last_name", with: I18n.t('new_user.last_name')#new_user.last_name
                fill_in "username", with: I18n.t('new_user.username')#new_user.username
                click_button "New User"
                expect(page).to have_text "User was successfully created."
        rescue StandardError => e
           puts "#{e.message}"
        end
    end
end

А ниже моя фабрика Bot

#spec/factories/users.rb

FactoryBot.define do
	  factory :user do
	    first_name { 'System' }
	  	last_name  { 'Administrator' }
	    username {'admin'}
		password {'password'}	
		system_generated_password {'password'}
		
		trait :admin do 
		   	user_role {"Administrator"} 
		end
	  end	
end

1 Ответ

0 голосов
/ 12 февраля 2020

Тот факт, что вы получаете сообщения проверки «Проверка пользователей не удалась: имя не может быть пустым ...» еще до того, как Capybara даже запустил сервер, говорит мне, что ваша фабрика не производит действительную запись пользователя. Вам следует использовать функцию распечатки FactoryBot - https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#linting -factories - чтобы убедиться, что все ваши фабрики выдают действительные записи до запуска тестов. Вы также захотите изучить использование последовательностей - https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#sequences - для тех частей ваших фабрик, которые предъявляют требования к уникальности (например, username), чтобы их можно было использовать для одновременного создания двух или более записей. .

Примечание. Нет необходимости в блоках begin ... rescue .. end, которые у вас есть, - все возникающие ошибки будут напечатаны в любом случае, и, устраняя их, вы фактически предотвращаете допустимые неудачные тесты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...