Я включаю драгоценный камень в поваренную книгу шеф-повара. Независимо от того, что я пробовал, я получаю подобные ошибки с неопределенной локальной переменной или методом `host '
Я пробовал много разных вариантов этого.
allow(HostOpsCookbook).to receive(:host).with(:sonic.version).and_return('10.0')
Макет Gem
cust_gem
\lib
\ibus
\host
sonic.rb
host.rb
host.rb
module Ibus
class Host
attr_reader :sonic
def initialize
extend_type
end
def enxtend_type
@sonic = Ibus::Host::Sonic.new
end
end
end
host \ sonic.rb
module Ibus
class Host
class Sonic
def version
.....
end
end
end
end
Поваренная книга шеф-повара
cookbook
\libraries
host_helper.rb
\recipes
default.rb
chef \ cookbook \ library\ host_helper.rb
module HostOpsCookbook
def host
require_ibus_gem #Loads the gem
@@host ||= Ibus::Host.new
end
end
Chef::Recipe.send(:include, HostOpsCookbook) if defined?(Chef::Recipe)
Chef::Resource.send(:include, HostOpsCookbook) if defined?(Chef::Resource)
Chef::Provider.send(:include, HostOpsCookbook) if defined?(Chef::Provider)
chef \ cookbook \ recipes \ default.rb
sonic_version = host.sonic.version
Так работает код, работает метод gem.
ОднакоЯ не могу понять, как заглушить ниже в тестах спецификации.
host.sonic.version