2016-08-19 2 views
1

Искал весь день и не решил это, поэтому здесь идет. EDIT: процесс написания этого сообщения заставлял меня думать о проблеме по-другому, и я понял это. Поэтому я отвечу на свой вопрос. Думаю, я проверил «ответ на свой вопрос».Функция вспомогательного шлема в chefspec

У меня есть строка в рецепте web.rb, который вызывает вспомогательную функцию:

prodservice_machine_name = search_for_nodes("ProdApp_Service_Install:1 AND chef_environment:#{node_env}")[0]['fqdn'] 

search_for_nodes определен в spec_helpers.rb, оборачивает некоторую помощь вокруг knife поиска, и возвращает nodes[]

Мы используем ответ для определения имени машины узла:

prodservice_machine_name = search_for_nodes("ProdApp_Service_Install:1 AND chef_environment:#{node_env}")[0]['fqdn'] 

Я не мог понять, как заглушить search_for_nodes, чтобы получить полезный ответ.

+0

Я рад, что вы поняли это! Стандартная процедура заключалась бы в том, чтобы не поставить свой ответ в вопросе, а опубликовать его как ответ. – thesecretmaster

+0

Я думал, что проверил «Ответ на свой вопрос», когда я разместил его. –

ответ

0

Как я уже говорил выше, я писал этот вопрос, и в результате написания вопроса мне стало ясно, в чем проблема: я не высмеивал возвращение в правильном формате - массив значений ключа.

я, наконец, пришел с этим:

before(:each) do 
    receive(:search_for_nodes).and_return(['fqdn' => 'dummy_server']) 
end 

Он работает, и я могу проверить, что мой рецепт правильно использует dummy_server в нужном месте.

Я надеюсь, что это поможет будущим искателям!

Смежные вопросы