2

machinistmachinist_mongomongo_mappercucumberpickleを一緒にうまくプレイしたいと思います。

現在、すべての設計図が構成された機械工がおり、キュウリを使用して BDD を実行しています。ここまでは順調ですね。私の問題は、すべての機械工の設計図に対してカスタムのキュウリの手順を書かなければならないことです。それ自体は問題ではありませんが、.NET 開発者としてレールをチェックアウトしているわけではありません.反射。

私の機械工の設計図を認識するために、ピクルスのビルトイン、、などを取得する方法はありますcapture_modelか?capture_plural_factory

blueprintname.makeカスタム キュウリ ステップでを使用すると、すべてが正しく機能するため、機械工が正しく構成および設定されていると確信しています。

Gem のバージョン:
rails 2.3.8
cucumber 0.8.3
cucumber-rails 0.3.2
mongo 1.0.5
mongo_mapper 0.8.2
pickle 0.3.0 machinist
1.0.6 machinist_mongo
1.1.1


機能/サポート/pickle.rb:
require 'pickle/world'
Pickle.configure do |config|
  config.adapters = [:machinist]
end

使用してみconfig.adapters = [:machinist, Machinist::MongoMapperAdapter]ましたが、 のメソッドがありませんというエラーが表示factoriesされMachinist::MongoMapperAdapterます。

Machinist::MongoMapperAdapter:Class (NoMethodError) の未定義メソッド `factories' /usr/local/lib/ruby/gems/1.8/gems/pickle-0.3.0/lib/pickle/config.rb:25:in `factories'

機能/サポート/machineist.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
アプリ/モデル/access_code.rb
class AccessCode
  include MongoMapper::Document

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

1 に答える 1

0

何日も壁に頭をぶつけた後、私はほとんどすべてが機能しています(私がまだ発見していない何か問題があるかどうかわからないので、私はほとんど機能していると言います)。私がそれを理解した後、修正は実際にはかなり簡単でした。

この問題を解決し、きゅうりのステップをピクルスMongoMapper::Documentで機能させるために、を含めるように変更しましたPickle::Adapter::Base例として、 pickleに付属しているlib / pickle / adapters / active_record.rbとdata_mapper.rb(active_record.rbと同じパス)を使用しました。おそらく機械工の設計図にピクルスを接続するために、まだmachinenist_mongoが必要でした。

私はのコードを信用できません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のdatabase_cleanerを構成するには:

require 'database_cleaner'
require 'database_cleaner/cucumber'

DatabaseCleaner.orm = 'mongo_mapper'
DatabaseCleaner.strategy = :truncation
于 2010-07-19T18:32:51.313 に答える