Как ввести stub_command в ChefSpec? - PullRequest
1 голос
/ 17 июня 2019

У меня есть это условие в моем рецепте:

install_action = (::Win32::Service.exists?(windows_service['name']) ? :configure : :create)

и ChefSpec для этого в spec-файле:

#1: not working 
allow_any_instance_of(Win32::Service)
                .to receive(:exists?)
                .with(windows_service[:name])
                .and_return(true)
#2: also not working
stub_command("::Win32::Service.exists?(#{windows_service[:name]})").and_return(true)

Не могли бы вы помочь выяснить, что я пропустил в тесте ChefSpec, который не работает, и высмеивает возвращаемое значение. Спасибо

1 Ответ

0 голосов
/ 17 июня 2019

Это должно работать:

allow(::Win32::Service).to receive(:exists?).with(windows_service[:name]).and_return(true)

Дело в том, что вы заглушаете метод класса exists?, а не метод экземпляра.Вот почему allow_any_instance_of не работает.И stub_command на самом деле для команд оболочки, таких как stub_command('cat file | grep "hello"')

...