Подтвердить что ты не робот

Правильный способ проверить папку lib с помощью rspec?

У меня есть тест, который пытается протестировать класс, расположенный в папке lib.

Сейчас я делаю это в своем parser_spec.rb

require 'spec_helper'
require 'parser' --> Because my class is /lib/parser.rb

describe "parser" do
  it "needs a url to initialize" do
    expect { Parser.new }.to raise_error(ArgumentError)
  end
end

Каким будет правильный способ включить все файлы lib, чтобы они находились в рамках тестов rspec?

4b9b3361

Ответ 1

Как вы это сделали - require 'parser' является рекомендуемым способом. RSpec помещает lib в $LOAD_PATH, так что вы можете потребовать файлы по отношению к нему, как и вы.

Ответ 2

Try this

require_relative "../../lib/parser.rb"

or 

require 'lib/parser.rb'

rspec автоматически загружает spec/spec_helper.rb при его запуске, а также автоматически добавляет в него папку "lib" LOAD_PATH, поэтому ваши запросы в "lib/parser.rb" видны и требуются должным образом.

Ответ 3

Чтобы избежать lib автозагрузки, как сказал Райан Бигг, вы можете автозагрузить пользовательский каталог, размещенный в корне приложения:

В список /your/config/application.rb вы можете добавить:

config.autoload_paths += %W(#{config.root}/my_stuff)

Затем вы можете сделать:

require 'spec_helper'

describe Parser do
  #your code...
end

Возможно, вы можете поместить свой класс внутри модуля, чтобы избежать столкновений:

class MyStuff::Parser
  #your code...
end

Затем вы можете сделать:

require 'spec_helper'

describe MyStuff::Parser do
  #your code...
end

Ответ 4

Просто поместите папку 'lib' в autoload_path. Например, в application.rb

config.autoload_paths += "#{Rails.root}/lib/"

Тогда вы можете сделать это обычно

require 'spec_helper'

describe Parser do
  ...
end