2016-07-25 8 views
0

In meinem Bestellmodell schließe ich eine PORO Klasse "ShipmentHandler" ein. Diese PORO ist wie folgt zu finden: app/models/Auftrag/shipment_handler.rbRspec Prüfung POROs in den Schienen enthalten

ich dies in meinem Auftragsmodell aufrufen etwa so:

def assign_shipments 
    ShipmentHandler.new(self).assign_shipments 
end 

Mein PORO wie folgt aussieht:

class Order 
    class ShipmentHandler 
     def initialize(order) 
      @set_some_variables 
     end 

     def some_methods 
     end 
    end 
end 

I Ich versuche, eine Spezifikation zu erstellen, um die Methoden in meiner ShipmentHandler-Klasse zu testen. Ich bin mir nicht sicher, wie dies zu tun, wie ich wie uninitialized constant ShipmentHandler immer Fehler halten

Ich habe versucht, es zu meinem order_spec.rb wie so hinzuzufügen:

describe Order do 
    describe Order::ShipmentHandler do 
    end 
end 

und:

describe Order do 
    describe ShipmentHandler do 
    end 
end 

Keine funktionieren. Ich habe auch versucht, eine Spezifikation in spec/models/order/shipment_handler_spec.rb Dies ist auch fehlgeschlagen.

Antwort

2

Die folgende Art und Weise Spezifikationen des Schreibens für mich gearbeitet, wenn ich einige Annahmen gemacht, was Ihre Order Klasse sieht aus wie mit der verschachtelten ShipmentHandler Klasse:

class Order 
    def assign_shipments 
    ShipmentHandler.new(self).assign_shipments 
    end 

    class ShipmentHandler 
    def initialize(order) 
     @order = order 
    end 

    def some_methods 
    end 
    end 
end 

RSpec.describe Order do 
    it { is_expected.to be_a Order } 
end 

# Method 1 
RSpec.describe Order::ShipmentHandler do 
    subject(:shipment_handler) { described_class.new(Order.new) } 

    it { is_expected.to be_a Order::ShipmentHandler } 
end 

# Method 2 
class Order 
    RSpec.describe ShipmentHandler do 
    subject(:shipment_handler) { described_class.new(Order.new) } 

    it { is_expected.to be_a Order::ShipmentHandler } 
    end 
end 
+0

Sir Sie sind mein Held. Danke vielmals! – stoerebink