2017-10-18 2 views
-1

Ich habe einen RSpec-Test für eine Methode zum Erstellen einer Aktion in einem Controller schreiben. Nun wurde ich folgende Fehlermeldung: error ScreenRSpec: Testen Sie eine Aktionsmethode in Controller

Mein Test:

describe '#create' do 
before(:each) { 
    @address = { 
    attributes: { 
     'street': "bla", 
     'street-number': 2, 
     'zip': "12345", 
     'city': "blabla", 
     'country': '' 
    }, 
    type: "addresses" 
    } 
} 


it 'test the create route' do 
    post 'create', { params: @address } 
end 
end 

Mein Controller-Methode:

public def create 
    action(Address::Create) 
    .otherwise('address_create_error', 401) 
    .then_render(Address::Representer::Out::Default) 
end 

Und meine Fabrik:

FactoryGirl.define do 
    factory :address do 
    street 'Musterstraße' 
    street_number '1' 
    zip '12345' 
    city 'Musterstadt' 
    country '' 
    end 
end 

Ich habe keine Ahnung, warum Dieser Fehler kommt. Könnte mir jemand helfen?

+0

Was ist in Adresse :: Representator :: Out :: Standard und Adresse :: Erstellen? Warum definieren Sie die Fabrik für die Adresse, verwenden sie aber nicht? Sie sollten die vollständige Fehlermeldung einfügen, und definitiv kein Screenshot. – arieljuod

Antwort

0

ich gelöst haben das Problem mit. Um es zu lösen, musste ich zwei Dinge anpassen.

  1. JSON muss vollständig als String
  2. es im Körper der Anforderung gesendet werden müssen übertragen werden, nicht als param. Das liegt an unserer speziellen Umgebung.

Danke für Ihre Hilfe trotzdem. :)

0

Versuchen Sie, die "=>" Syntax heute

@address = { 
    'attributes' => { 
     'street' => "bla", 
     'street-number' => 2, 
     'zip' => "12345", 
     'city' => "blabla", 
     'country': '' 
    }, 
    'type' => "addresses" 
    }