Передача хеша в качестве аргумента в Ruby - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь реализовать модуль, содержащий данные, которые будут использоваться в тестах.Вот мой модуль:

authentication.rb

module Helpers
  module Authentication
    def sign_in_as
      admin = {
        mobile_number: "123456789",
        password: "123456"
      }
    end
  end
end

Модуль вызывается в spec_helper файле:

spec_helper.rb

RSpec.configure do |config|
  config.include Helpers::Authentication
end

Файл ниже - мой метод получения учетных данных для входа в систему:

login_screen.rb

  def login_as(**hash)
    mobile_number_textfield.send_keys(hash[mobile_number])
    password_textfield.send_keys(hash[password])
    next_button.click()
  end

КогдаЯ вызываю функцию из моего модуля в моем spec-файле, учетные данные не вводятся:

login_spec.rb

RSpec.describe('Login') do
  before(:all) do
    puts "something here"
  end

  it('should login as founder') do 
    @login_screen.login_as(sign_in_as)
  end
end

Как я могу передать хеш в мойметод входа?

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Вы можете сделать одно из следующих действий:

def login_as(mobile_number:, password:)
  mobile_number_textfield.send_keys(mobile_number)
  password_textfield.send_keys(password)
  next_button.click()
end

def login_as(hash)
  mobile_number_textfield.send_keys(hash[:mobile_number])
  password_textfield.send_keys(hash[:password])
  next_button.click()
end

login_as({mobile_number: "02980298098", password: "password"})
0 голосов
/ 07 декабря 2018

Мое решение работает:

В моем модуле я создал функцию только с хешем:

authentication.rb

module Helpers
  module Authentication
    def sign_in_as
      {
        mobile_number: '123456789',
        password: '123456'
      }
    end
  end
end

Мой spec_helper остается тем же

spec_helper.rb

require_relative './helpers/authentication'

    RSpec.configure do |config|
      config.include Helpers::Authentication
    end

В моем файле login_screen , для каждой строки, котораяЯ хочу отправить хеш-значение. Я добавил символ:

login_screen.rb

  def login_as(**hash)
    mobile_number_textfield.send_keys(hash[:mobile_number])
    password_textfield.send_keys(hash[:password])
    next_button.click()
  end

В моем файле login_spec я только что позвонилsign_in_as функция (созданная в моем модуле)

Совет: В файле спецификации вам не требуется модуль, потому что добавленная строка config.include Helpers::Authentication в файле spec_helper делает это.

login_spec.rb

RSpec.describe('Login') do
  before(:all) do
    puts "something here"
  end

  it('should login as founder') do 
    @login_screen.login_as(sign_in_as)
  end
end
0 голосов
/ 05 декабря 2018

Вам необходимо использовать символы в качестве ключей хеша при обращении к нему:

def login_as(**hash)
  mobile_number_textfield.send_keys(hash[:mobile_number])
  password_textfield.send_keys(hash[:password])
  next_button.click()
end

Ваш код, вероятно, вызывает ошибку в mobile_number_textfield.send_keys(hash[:mobile_number]).

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