RSpec:测试控制器中的创建操作方法

RSpec:测试控制器中的创建操作方法

问题描述:

我已经为控制器中的创建操作方法编写了RSpec测试。现在我成为了以下错误: error ScreenRSpec:测试控制器中的创建操作方法

我的测试:

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 

我控制器的方法:

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

而且我厂:

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

我不知道为什么这个错误来了。有人能帮助我吗?

+0

什么在地址:: Representer :: Out ::默认和地址::创建?你为什么要定义工厂的地址,但不使用它?你应该粘贴完整的错误信息,绝对不是截图。 – arieljuod

今天我已经解决了这个问题。为了解决这个问题,我必须调整两件事情。

  1. 的JSON必须完全作为字符串
  2. 它必须在请求的主体中发送,而不是作为一个PARAM被传送。那是因为我们特殊的环境。

无论如何感谢您的帮助。 :)

尝试使用 “=>” 语法

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