モジュールがあり、activemodelが含まれており、rspecを使ってテストしたいと思います。RSpecとActiveModel
lib/
|__ my_module/
| |__ base.rb
|__ my_module.rb
spec/
|__ my_module_spec.rb
|__ spec_helper.rb
|__ support/
|__ shared_examples/
|__ active_model.rb
内部の 'my_class.rb':
require "active_model"
require "my_module/base"
内部の 'base.rb':
module MyModule
class Base
extend ActiveModel::Naming
include ActiveModel::Conversion
include ActiveModel::Validations
end
end
内部の「my_module_spec
これは、これまでのところ、私のセットアップがあります。 rb ':
require 'spec_helper'
describe MyModule do
describe MyModule::Base do
it_behaves_like "ActiveModel"
end
end
内部の 'spec_helper.rb': 'active_model.rb' 内部
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'rspec'
require 'my_module'
# Requires supporting files with custom matchers and macros, etc,
# in ./support/ and its subdirectories.
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
RSpec.configure do |config|
end
:
# taken from http://pivotallabs.com/users/jdean/blog/articles/1706-form-backing-objects-for-fun-and-profit
shared_examples_for "ActiveModel" do
require 'test/unit/assertions'
require 'active_model/lint'
include Test::Unit::Assertions
include ActiveModel::Lint::Tests
before do
@model = subject
end
ActiveModel::Lint::Tests.public_instance_methods.map { |method| method.to_s }.grep(/^test/).each do |method|
example(method.gsub('_', ' ')) { send method }
end
end
私は私のセットアップは大丈夫ですが、私はbundle exec rspec spec
を実行しようとしたとき、私は、これらのエラーを取得していますと思いました
Failures:
1) MyModule MyModule::Base behaves like ActiveModel test to key
Failure/Error: example(method.gsub('_', ' ')) { send method }
2) MyModule MyModule::Base behaves like ActiveModel test to param
Failure/Error: example(method.gsub('_', ' ')) { send method }
3) MyModule MyModule::Base behaves like ActiveModel test to partial path
Failure/Error: example(method.gsub('_', ' ')) { send method }
4) MyModule MyModule::Base behaves like ActiveModel test valid?
Failure/Error: example(method.gsub('_', ' ')) { send method }
5) MyModule MyModule::Base behaves like ActiveModel test persisted?
Failure/Error: example(method.gsub('_', ' ')) { send method }
6) MyModule MyModule::Base behaves like ActiveModel test model naming
Failure/Error: example(method.gsub('_', ' ')) { send method }
7) MyModule MyModule::Base behaves like ActiveModel test errors aref
Failure/Error: example(method.gsub('_', ' ')) { send method }
8) MyModule MyModule::Base behaves like ActiveModel test errors full messages
Failure/Error: example(method.gsub('_', ' ')) { send method }
私はここで間違っていますか? ActiveModelを正しくテストするにはどうすればよいですか?あなたはあまりにも多くのことをしよう事前
MyModule :: Base.newに変更を加えて動作させました。 activeModel.rbでは 'before @model = subject end'は' before @model = MyModule :: Base.new'にする必要があります。 –