#ruby #chefspec
Вопрос:
Как правильно вернуть хэш-объект из заглушки, чтобы я не всегда получал сообщение об ошибке «Nometoderror: неопределенный метод»каждый» для nil: NilClass»?
# ruby code to test
env_json = JSON.parse(Chef::ServerAPI.new.get("test").to_json)
env_json ['versions'].each do |name, version|
# things to do
end
В своих тестах я хочу издеваться над вызовом ServerAPI.
before(:each) do
query = double
allow(query).to receive(:get) do |arg1|
case arg1.downcase
when %r{test}
{"versions" => { "flag2" => false } } ## return hash value
else
{"versions2" => { "flag2" => true } } ## return hash value
end
end
allow(Chef::ServerAPI).to receive(:new).and_return(query)
end
У кого-нибудь есть идея, как я должен передать хэш-значение в запросе?
Комментарии:
1. Не уверен, в чем конкретно проблема, но я могу вам сказать, что ваше регулярное выражение для «test» на самом деле ищет символ [tab], за которым следует «est».
2. То, что выводит сообщение об
JSON.parse(Chef::ServerAPI.new.get("test").to_json)
ошибке, указывает на то, что['versions']
возвращает ноль Маленький совет: попробуйте эту нотацию намного яснее{ versions: { flag2: false } }