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