как написать / запустить спецификации для файлов, отличных от модели / вида / контроллера - PullRequest
6 голосов
/ 08 декабря 2011

Используя rails и rspec, rspec легко генерирует необходимые мне файлы, когда я использую команду rails generate с моделями / представлениями / контроллерами. Но теперь я хочу написать спецификации для модуля, который я написал. Модуль находится в /lib/my_module.rb, поэтому я создал спецификацию в /spec/lib/my_module_spec.rb

Проблема, с которой я столкнулся, заключается в том, что когда я пытаюсь выполнить rspec spec/, файл my_module_spec.rb запускается, но ссылка на мой модуль в lib/my_module.rb не может быть найдена. Какой правильный способ сделать это?

К вашему сведению, файл my_module_spec.rb уже содержит require 'spec_helper'

require 'spec_helper'

describe "my_module" do
  it "first test"
    result = MyModule.some_method  # fails here because it can't find MyModule
  end
end

Ответы [ 3 ]

9 голосов
/ 08 декабря 2011

Вы можете попробовать включить модуль и, возможно, обернуть его в объект

require 'spec_helper'

#EDIT according to 
# http://stackoverflow.com/users/483040/jaydel
require "#{Rails.root}/lib/my_module.rb"

describe MyModule do

  let(:wrapper){
    class MyModuleWrapper
      include MyModule
    end
    MyModuleWrapper.new
  }

  it "#some_method" do
    wrapper.some_method.should == "something"
  end

end
1 голос
/ 24 марта 2012

Содержит ли ваш модуль методы класса или методы экземпляра? Помните, что только методы класса будут доступны через

MyModule.some_method

означает, что some_method определен как

def self.some_method
  ...
end

Если ваш модуль содержит методы экземпляра, используйте решение Jasper выше. Надеюсь, что это проясняет.

0 голосов
/ 13 февраля 2012

Поместите в ваш файл config/application.rb следующее:

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

Я просто боролся с той же проблемой, и вышеописанное помогло мне.На самом деле нет никакой причины, по которой вам нужно прыгать через обручи, чтобы иметь возможность получить доступ к вашим lib/ файлам из RSpec и написать для них тесты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...