Как да stub_command в ChefSpec?

Имам това условие в моята рецепта:

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

и ChefSpec за това в спецификационния файл:

#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, което не работи и се подиграва на върнатата стойност. Благодаря


person SmNg1028    schedule 16.06.2019    source източник


Отговори (1)


Това трябва да работи:

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"')

person Draco Ater    schedule 17.06.2019