2010-07-17 2 views
2

machinist, machinist_mongo, mongo_mapper, cucumberpickle을 함께 즐기고 싶습니다.mongo_mapper, machinist 및 machinist_mongo를 사용하여 오이와 피클을 어떻게 작동합니까?

현재 모든 청사진을 구성한 기계공이 있으며 BDD를 수행하기 위해 오이를 사용하고 있습니다. 여태까지는 그런대로 잘됐다. 내 문제는 모든 기계 기술자 청사진에 대해 사용자 정의 오이 단계를 작성해야한다는 것입니다. 내 트랙에서 나를 멈추게하지 않기 때문에 실제로 문제는 아니지만 .NET 개발자가 레일을 체크 아웃 할 때 닷넷에서 각 청사진에 대한 단계를 작성해야하는 것은 정말 더러운 것처럼 느낍니다. 반사.

내 기계공 청사진을 인식하기 위해 capture_model, capture_plural_factory 등으로 피클을 만들 수있는 방법이 있습니까?

나는 사용자가 오이 단계에서 blueprintname.make을 사용할 때 모든 것이 올바르게 작동하기 때문에 기계공을 구성하고 올바르게 설정했다고 확신합니다.

젬 버전 :
레일 2.3.8
오이 오이 0.8.3
레일 0.3.2
몽고 1.0.5
mongo_mapper 0.8.2
클 0.3.0
기계공 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]을 사용해 보았지만 Machinist::MongoMapperAdapter에 대해 factories이라는 메서드가 없다는 오류가 표시됩니다.

기계공에 대한

정의되지 않은 메서드`공장 ':: MongoMapperAdapter : 클래스 (NoMethodError) /usr/local/lib/ruby/gems/1.8/gems/pickle-0.3.0/lib/pickle/config.rb : 25 : '공장'

기능/지원/machinist.rb : (명확성을 위해립니다)
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 
end 
응용 프로그램/모델/access_code.rb ,263,432,

답변

0

벽에 머리를 치고 며칠이 지나면 대부분 작동합니다. (내가 아직 발견하지 못한 것이 있는지 확실하지 않기 때문에 대부분 작동합니다.) 일단 수정을하면 실제로 수정이 간단 해졌습니다.

문제를 해결하고 cucumber 단계를 pickle과 함께 사용하려면 MongoMapper::DocumentPickle::Adapter::Base으로 변경했습니다. 예를 들어, pickle과 함께 제공되는 lib/pickle/adapters/active_record.rb 및 data_mapper.rb (active_record.rb와 동일한 경로)를 사용했습니다. 나는 여전히 내 machinist 청사진에 피클을 연결하기 위해 machinist_mongo이 필요했다.

def self.model_classes의 코드에 대해서는 크레딧을받을 수 없습니다. tjtuom's pickle fork에서 도난당했습니다.

추신. 이것이 완전히 잘못된 방법 일 경우 비평이나 제안을 자유롭게 해주십시오, 나는 완벽한 루비 멍청이입니다.

require 'database_cleaner' 
require 'database_cleaner/cucumber' 

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

Pickle.configure do |config| 
    config.adapters = [:machinist] 
end 

가 몽고에 대한 database_cleaner를 구성하려면 :

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 

는 기계공을 위해 피클을 설정

관련 문제