在观看了Corey 的Fasts Rails Tests讲话和Avdi阅读Object on Rails后,我正在设置我的新Rails 3.2应用程序以利用这些概念.
为了让一切正常,我开始使用这个示例spec文件.
# spec_no_rails/projects/financials_spec.rb
require_relative '../spec_no_rails_helper'
class DummyProject
include Modules::Projects::Financials
end
describe Modules::Projects::Financials do
it 'should have some method' do
DummyProject.new.foo.should == 'bar'
end
end
Run Code Online (Sandbox Code Playgroud)
这是用于要求模块的初始spec_no_rails_helper.rb文件
# spec_no_rails/spec_no_rails_helper.rb
Dir["#{Dir.pwd}/app/pimms/**/*.rb"].each { |file| require file }
Run Code Online (Sandbox Code Playgroud)
然后我开始创建新的示例模块.
# app/pimms/modules/projects/financials.rb
module Modules::Projects::Financials
def foo
'bar'
end
end
Run Code Online (Sandbox Code Playgroud)
为了看到当我将新的独立模块包含在我的一个ActiveRecord类中时,一切都将起作用,我将以下行添加到我的一个模型中.
# app/models/project.rb
class Project < ActiveRecord::Base
include Modules::Projects::Financials
end
Run Code Online (Sandbox Code Playgroud)
这让我可以打开控制台,看到一切都按预期工作.
> Project.first.foo
=> "bar"
Run Code Online (Sandbox Code Playgroud)
所以在这个阶段我定义了一个在app/pimms/modules/projects/financials.rb下定义的命名空间独立模块,我可以将其包含在Rails模型中,一切都按预期工作.
我遇到的问题是当我尝试运行规范时,我得到以下内容.
> bundle exec rspec spec_no_rails/
/Users/scott/Code/pimms/spec_no_rails/projects/financials_spec.rb:5:in `<class:DummyProject>': …
Run Code Online (Sandbox Code Playgroud)