[英]how to write/run specs for files other than model/view/controller
使用rails和rspec,當我使用帶有models / views / controllers的rails generate
命令時,很容易讓rspec為我生成必要的文件。 但是現在我想為我寫的模塊編寫規范。 該模塊是/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
您可以嘗試包含模塊,也可以將其包裝在對象中
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
您的模塊是否包含類方法或實例方法? 請記住,只有類方法可用
MyModule.some_method
意思是some_method被定義為
def self.some_method
...
end
如果您的模塊包含實例方法,那么請使用上面的Jasper解決方案。 希望澄清一下。
將以下內容放在config/application.rb
文件中:
config.autoload_paths += %W(#{Rails.root}/lib)
我只是在解決同樣的問題,上面對我有用。 沒有任何理由你必須跳過箍才能從RSpec訪問你的lib/
文件並為它們編寫測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.