我想得到machinistmachinist_mongomongo_mappercucumberpickle一起玩得很好。
目前我有机械师与我的所有蓝图配置,并使用黄瓜做bdd。到现在为止,一直都还不错。我的问题是我必须为我所有的机械师蓝图写定制的黄瓜步骤。这本身并不是一个真正的问题,因为它并没有阻止我前进,但是作为一个签出rails的.NET开发人员,必须为每个蓝图编写一个步骤,而在.NET中,我可能会使用反射。
我有没有办法让pickle的内置capture_modelcapture_plural_factory等来识别我的机械师蓝图?
我很有信心,我有机械师配置和设置正确,因为当我使用blueprintname.make时,在一个自定义黄瓜步骤中,一切正常。
Gem版本:
钢轨2.3.8
黄瓜0.8.3
黄瓜轨0.3.2
蒙戈1.0.5
蒙哥图0.8.2
泡菜0.3.0
机械师1.0.6
机械师_mongo 1.1.1
功能/支持/pickle.rb:

require 'pickle/world'
Pickle.configure do |config|
  config.adapters = [:machinist]
end

我尝试使用config.adapters = [:machinist, Machinist::MongoMapperAdapter]但是我得到一个错误,指出没有factories的方法。
Machinist::mongomapperdapter:Class(NoMethodError)/usr/local/lib/ruby/gems/1.8/gems/pickle-0.3.0/lib/pickle/config.rb:25:在“factories”中的未定义方法“factories”
功能/支持/机械师.rb:
require 'machinist'
require 'machinist/mongo_mapper'
require "#{Rails.root}/spec/blueprints"
require 'database_cleaner'
Before { Sham.reset } # reset Shams in between scenarios

spec/blueprints.rb(为清晰起见,已截断)
require 'sham'
require 'faker'

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

AccessCode.blueprint do
  code
end

应用程序/型号/访问代码.rb
class AccessCode
  include MongoMapper::Document

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

最佳答案

经过几天的埋头苦干,我的一切基本上都在工作(我之所以说基本上在工作,是因为我不确定是否有什么问题我还没有发现)。我一想起来,解决方法其实很简单。
为了解决这个问题,并让我的cucumber步骤使用pickle,我将MongoMapper::Document更改为包含Pickle::Adapter::Base我使用lib/pickle/adapters/active_record.rb和data_mapper.rb(与active_record.rb相同的路径)作为示例,它们都是pickle附带的。我还需要把泡菜和我的机械师设计图联系起来。
我不能相信def self.model_classes中的代码-它是从machinist_mongo中偷来的。
如果这是完全错误的做法,请随意批评或提出建议,我完全是一个鲁比noob。

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配置tjtuom's pickle fork
require 'database_cleaner'
require 'database_cleaner/cucumber'

DatabaseCleaner.orm = 'mongo_mapper'
DatabaseCleaner.strategy = :truncation

关于ruby - 如何与mongo_mapper,机械师和machinist_mongo一起使用 cucumber 和咸菜?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3273184/

10-10 07:25