Я использую гвардию охраны/прослушивания, чтобы написать прослушиватель для изменения каталога. Когда файл добавляется в каталог, я создаю пустой файл done.txt
в этом каталоге.Простой тест для прослушивания прослушивателя/прослушивания
Он работает так, как я ожидаю, при ручном тестировании, но не уверен, как написать тест для него, поскольку слушатель должен работать в своем собственном процессе.
Я пробовал использовать вилку, но это вроде создаёт закрытие, которого я не ожидал.
Вот мой слушатель:
require 'listen'
class Listener
def initialize(directory)
@directory = directory
end
def start
listener = Listen.to(@directory, only: /\.txt$/) do |modified, added, removed|
if added
File.new('done.txt', 'w') if rp_checksum == my_checksum
end
end
listener.start
sleep
end
end
И мой тест:
RSpec.describe Listener do
it 'starts the listener' do
fork do
listener = Listener.new("#{Dir.getwd}")
listener.start
end
expect(listener.processing?).to eq(true)
end
И Я получаю ошибку:
NameError:
undefined local variable or method `listener' for #<RSpec::ExampleGroups::Listener:0x007fdc91980768>
# ./listener_spec.rb:13:in `block (2 levels) in <top (required)>'
Возможно, я могу демоном слушателя, но я не конечно, как это сделать.