как протестировать гугл несущей волны туман в 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)