Похоже, что jekyll меняет текущий каталог при создании сайта, что, поскольку он запускается в потоке, также влияет на тесты, которые пытается выполнить RSpec (см. https://bugs.ruby -lang.org / Issues /9785 , почему Dir.chdir
не является потокобезопасным) - что приводит к попыткам загрузки объектов из неправильных местоположений.
Потенциальным решением этой проблемы может быть ожидание создания сайта Jekyll перед тем, как фактически запуститьтесты.Комментарий в вашем spec_helper
, кажется, утверждает, что кто-то думал, что передача force_build: true
сделает это, но из-за быстрого прочтения кода jekyll-rack
, я не думаю, что это правда, и вам действительно нужно ждать, пока compiling?
вернетсяfalse (v 0.5) (complete?
для возврата true в текущей ветке master), чтобы убедиться, что построение завершено (а также передача force_build
).Это может быть сделано либо в режиме сна и проверки цикла (проще)
sleep 0.1 while <jekyll app>.compiling?
или (если используется основная ветвь) через мьютекс / условный Rack :: Jekyll, как в его наборе тестов - https://github.com/adaoraul/rack-jekyll/blob/master/test/helper.rb#L49
Примечание. Также проверьте мой комментарий о ваших тестах, которые на самом деле ничего не тестируют.