модели/message.rb
class Message
attr_reader :bundle_id, :order_id, :order_number, :event
def initialize(message)
hash = message
@bundle_id = hash[:payload][:bundle_id]
@order_id = hash[:payload][:order_id]
@order_number = hash[:payload][:order_number]
@event = hash[:concern]
end
end
спецификация/модель/message_spec.rb
require 'spec_helper'
describe Message do
it 'should save the payload' do
payload = {:payload=>{:order_id=>138251, :order_number=>"AW116554416"}, :concern=>"order_create"}
message = FactoryGirl.build(:message, {:payload=>{:order_id=>138251, :order_number=>"AW116554416"}, :concern=>"order_create"})
message.event.should == "order_create"
end
end
error_log
Неудачи:завод девушка передать аргументы модель определения по сборке/создавать
1) Сообщение должно сохранить полезную нагрузку
Failure/Error: message = FactoryGirl.build(:message, {:payload=>{:order_id=>138251, :order_number=>"AW116554416"}, :concern=>"order_create"})
ArgumentError:
wrong number of arguments (0 for 1)
# ./app/models/message.rb:4:in `initialize'
# ./spec/models/message_spec.rb:7:in `block (2 levels) in <top (required)>'
Следует отметить, что только с FactoryGirl 2,5 имеет initialize_with поддержали: http://robots.thoughtbot.com/factory-girl-2-5-gets-custom-constructors (который только действительно имеет значение, если вам 're stuck using rspec 1.x из-за проблем с зависимостями) – Lambart
Также обратите внимание: 'DEPRECATION WARNING: \' #ignore \ 'устарело и будет удалено в 5.0. Вместо этого используйте \ '#transient \'. – thisismydesign