簡體   English   中英

如何編寫/運行模型/視圖/控制器以外的文件的規格

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM