首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让黄瓜和泡菜与mongo_mapper、机械师和machinist_mongo一起工作?

如何让黄瓜和泡菜与mongo_mapper、机械师和machinist_mongo一起工作?
EN

Stack Overflow用户
提问于 2010-07-17 20:39:45
回答 1查看 915关注 0票数 2

我想让机械师蒙戈映射器黄瓜泡菜在一起玩得很好。

目前,我有机械师与我所有的蓝图配置,并正在使用黄瓜做BDD。到目前一切尚好。我的问题是,我必须为我所有的机械师蓝图写自定义黄瓜步骤。这本身并不是一个真正的问题,因为它并没有阻止我前进,但作为一个.NET开发人员检查rails,为每个蓝图编写一个步骤是非常肮脏的,而在.NET中,我可能需要使用反射。

有什么方法可以让我在capture_modelcapture_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

特性/支持/泡菜.:

代码语言:javascript
复制
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工厂的

特征/支持/机器.:

代码语言:javascript
复制
require 'machinist'
require 'machinist/mongo_mapper'
require "#{Rails.root}/spec/blueprints"
require 'database_cleaner'
Before { Sham.reset } # reset Shams in between scenarios

规范/Blueprints.rb(为清晰起见截断)

代码语言:javascript
复制
require 'sham'
require 'faker'

Sham.code { Faker::Lorem.words 1 }

AccessCode.blueprint do
  code
end

app/models/access_code.rb

代码语言:javascript
复制
class AccessCode
  include MongoMapper::Document

  key :code, String, :required => true
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。如果这是完全错误的做法,请随时批评或提出建议,我是一个完整的红宝石菜鸟。

代码语言:javascript
复制
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

为机械师设置腌菜:

代码语言:javascript
复制
Pickle.configure do |config|
  config.adapters = [:machinist]
end

要为mongo配置清洁剂

代码语言:javascript
复制
require 'database_cleaner'
require 'database_cleaner/cucumber'

DatabaseCleaner.orm = 'mongo_mapper'
DatabaseCleaner.strategy = :truncation
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3273184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档