我想让机械师,蒙戈,映射器,黄瓜和泡菜在一起玩得很好。
目前,我有机械师与我所有的蓝图配置,并正在使用黄瓜做BDD。到目前一切尚好。我的问题是,我必须为我所有的机械师蓝图写自定义黄瓜步骤。这本身并不是一个真正的问题,因为它并没有阻止我前进,但作为一个.NET开发人员检查rails,为每个蓝图编写一个步骤是非常肮脏的,而在.NET中,我可能需要使用反射。
有什么方法可以让我在capture_model,capture_plural_factory等地安装泡菜来识别我的机械师蓝图吗?
我很有信心我已经正确配置和设置了机械师,因为当我使用blueprintname.make时,在定制的黄瓜步骤中,一切都会正常工作。
Gem版本:
rails 2.3.8
黄瓜0.8.3
黄瓜-rails 0.3.2
蒙戈1.0.5
mongo_mapper 0.8.2
泡菜0.3.0
机械师1.0.6
machinist_mongo 1.1.1
特性/支持/泡菜.:
require 'pickle/world'
Pickle.configure do |config|
config.adapters = [:machinist]
end我尝试使用config.adapters = [:machinist, Machinist::MongoMapperAdapter],但是我得到了一个错误,说明没有用于Machinist::MongoMapperAdapter的方法factories。
未定义方法
factories' for Machinist::MongoMapperAdapter:Class (NoMethodError) /usr/local/lib/ruby/gems/1.8/gems/pickle-0.3.0/lib/pickle/config.rb:25:in工厂的
特征/支持/机器.:
require 'machinist'
require 'machinist/mongo_mapper'
require "#{Rails.root}/spec/blueprints"
require 'database_cleaner'
Before { Sham.reset } # reset Shams in between scenarios规范/Blueprints.rb(为清晰起见截断)
require 'sham'
require 'faker'
Sham.code { Faker::Lorem.words 1 }
AccessCode.blueprint do
code
endapp/models/access_code.rb
class AccessCode
include MongoMapper::Document
key :code, String, :required => true
end发布于 2010-07-19 18:32:51
经过几天的努力,我的一切都在工作(我说大部分都在工作,因为我不确定是否有什么问题我还没有发现)。一旦我想出办法,解决办法其实就很简单了。
为了解决这个问题,并让我的黄瓜步骤使用泡菜,我将MongoMapper::Document更改为包含Pickle::Adapter::Base。我使用了lib/泡菜/适配器/active_Recor.rb和data_mapper.rb (与active_record.rb相同的路径),它们以泡菜为例。我仍然需要蒙戈,大概是为了把泡菜和我的机械师蓝图联系起来。
我不能为def self.model_classes中的代码取名--它是从tjtuom泡菜叉偷来的。
PS。如果这是完全错误的做法,请随时批评或提出建议,我是一个完整的红宝石菜鸟。
module MongoMapper::Document
module PickleAdapter
include Pickle::Adapter::Base
def self.model_classes
@@model_classes ||= ::MongoMapper::Document.descendants.to_a +
::MongoMapper::Document.descendants.map { |klass| klass.subclasses }.flatten
end
# get a list of column names for a given class
def self.column_names(klass)
klass.column_names
end
# Get an instance by id of the model
def self.get_model(klass, id)
klass.find(id)
end
# Find the first instance matching conditions
def self.find_first_model(klass, conditions)
klass.find(:first, :conditions => conditions)
end
# Find all models matching conditions
def self.find_all_models(klass, conditions)
klass.find(:all, :conditions => conditions)
end
end
end为机械师设置腌菜:
Pickle.configure do |config|
config.adapters = [:machinist]
end要为mongo配置清洁剂:
require 'database_cleaner'
require 'database_cleaner/cucumber'
DatabaseCleaner.orm = 'mongo_mapper'
DatabaseCleaner.strategy = :truncationhttps://stackoverflow.com/questions/3273184
复制相似问题