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

时间:2017-10-18 14:17:01

标签: ruby-on-rails rspec factory-bot

我在控制器中为create action方法编写了一个RSpec Test。现在我成了以下错误: error Screen

我的测试:

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

我不知道为什么会出现这个错误。有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

尝试使用" =>"语法

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

答案 1 :(得分:0)

我今天解决了这个问题。为了解决这个问题,我不得不调整两件事。

  1. JSON必须完全作为字符串传输
  2. 必须在请求正文中发送,而不是作为参数发送。这是因为我们的特殊环境。
  3. 无论如何,谢谢你的帮助。 :)