как протестировать гугл несущей волны туман в rspec с настройкой конфигурации

У меня есть конфигурация ниже, и я хотел написать для нее TC на рубине. Я новичок в рубине и хотел понять, как мы можем настроить конфигурацию тумана так, чтобы она указывала на макет и использовать его в тестовом примере.

      class TestUploader < CarrierWave::Uploader::Base

  storage :fog

  def fog_credentials
    {
      :provider => 'google',
      :google_project =>'my project',
      :google_json_key_location =>'myCredentialFile.json'

    }
  end


  def fog_provider
    'fog/google'
  end

  def fog_directory
    '{#bucket-name}'
  end

  def store_dir

    when :File
      "#{file.getpath}/file"
    when :audio
      "#{file.getpath}/audio"
    else
      p " Invalid file "
    end
  end
end

      class TestModel

  mount_uploader :images, TestUploader

end

Может ли кто-нибудь помочь мне настроить для написания и выполнения модульного теста с несколькими примерами. Любая помощь могла бы быть полезна.

1 ответ

В результате проведенного мной теста я получил следующий пример кода, работающего с облачным хранилищем Google с использованием драгоценного камня Fog:

      require "fog/google"

# Uncomment the following line if you want to use Mock
#Fog.mock!

# Bucket name
bucket = "an-existing-bucket"

# Timestamp used as sample string
test = Time.now.utc.strftime("%Y%m%d%H%M%S")

connection = Fog::Storage.new({
  :provider => "Google",
  :google_project => "your-project",
  :google_json_key_location => "path-to-key.json",
})

# Lists objects in a bucket
puts connection.list_objects(bucket)

#Creates new object
connection.put_object(bucket, test, test)
puts "Object #{test} was created."

Он работает в производстве, но не работает в фиктивном режиме со следующей ошибкой:

      `not_implemented': Contributions welcome! (Fog::Errors::MockNotImplemented)

Кажется, что это не реализовано, как показано наput_objectопределение метода в документации.

Кроме того, об этом говорится в этом выпуске GitHub :

Закрытие вопроса. Версия 1.0.0 вышла, и у нас больше нет моков для объектов, поддерживаемых json.


Реквизиты для входа

Как показано в документации к туману , для настройки учетных данных Google вам необходимо использовать их следующим образом:

      connection = Fog::Storage.new({
  :provider                         => 'Google',
  :google_storage_access_key_id     => YOUR_SECRET_ACCESS_KEY_ID,
  :google_storage_secret_access_key => YOUR_SECRET_ACCESS_KEY
})

Насмехаться

В документации GitHub — Fog::Google также есть минимальная конфигурация для интеграции Fog с Carrierwave.

Чтобы использовать макет Cloud Storage , вы можете использовать следующую строку:

      Fog.mock!
connection = Fog::Storage.new(config_hash)

Ресурсы для конкретных поставщиков

В разделе документации поставщика вы найдете ссылки на документацию и примеры для конкретного поставщика.

Поставщики, поддерживаемые сообществом, могут получить помощь, заполнив Github Issues в соответствующем репозитории.

Чтобы максимально использовать преимущества открытого исходного кода, вам рекомендуется сообщать об ошибках в Github Issues.

В этом примере GitHub вы можете найти реализацию для Google Cloud Storage.

Список классов

В документации RubyGems для тумана-google вы можете найти определения и параметры классов. Например,list_objectsметод:

#list_objects(bucket, options = {}) ⇒ Google::Apis::StorageV1::ObjectsПеречисляет объекты в корзине, соответствующие некоторым критериям.

Параметры:

  • bucket(String) — Имя корзины для списка
  • (Hash) (по умолчанию: {}) — Необязательный хэш опций Options Hash (options):
  • :delimiter (String)— Разделитель для сворачивания объектов для эмуляции режима каталога.
  • :max_results (Integer)— Максимальное количество результатов для получения
  • :page_token (String)— Токен для выбора определенной страницы результатов
  • :prefix (String)— Строка, с которой должен начинаться объект, чтобы его можно было вернуть
  • :projection ("full", "noAcl")— Набор возвращаемых свойств (по умолчанию «noAcl»)
  • :versions (Boolean)— Если true, перечисляет все версии объекта как отдельные результаты (по умолчанию False).

Возвращает:

  • (Google::Apis::StorageV1::Objects)
Другие вопросы по тегам