【问题标题】:Key transform not working in test environment for active_model_serializers密钥转换在 active_model_serializers 的测试环境中不起作用
【发布时间】:2016-07-18 15:28:25
【问题描述】:

我正在使用json_api 适配器并且没有明确指定密钥转换,因此我的应用程序使用json_api 提供的密钥转换,即:dashed

我的序列化程序中有一个变量名为access_locked?。 下面是包含管理模型序列化程序的代码 sn-p:

#app/serializers/admin_serializer.rb
class AdminSerializer < ActiveModel::Serializer
  attributes :id, :email, :access_locked?
end

在开发环境中,我正确地将 admin json 中的值设为access-locked?,即下划线_被连字符替换-

但是我的 rspec 测试用例失败了,因为序列化的管理员包含 access_locked? 而不是 access-locked?

尝试在test.rb 和active_model_serializers.rb 中使用ActiveModelSerializers.config.key_transform = :unaltered,但没有成功。

gem 版本为gem 'active_model_serializers', '0.10.0rc4' 这是失败的 rspec:

#features/dashboard/admins/admins_index_spec.rb

scenario 'admin sees all other admins', :js => true do
    signin_admin(@admin.email, @admin.password)
    expect(page).to have_content I18n.t 'devise.sessions.signed_in'
    click_link 'Settings'
    click_link 'Admins'
    expect(page).to have_content @admin.email
    expect(page).to have_content @admin1.email
    expect(page).to have_content @admin2.email

    expect(page).to have_selector('#admin-row-1 .glyphicon-ban-circle')
#TODO failing because of http://stackoverflow.com/questions/36312019/key-transform-not-working-in-test-environment-for-active-model-serializers
    expect(page).to have_selector('#admin-row-2 .glyphicon-ok-circle')
    expect(page).to have_selector('#admin-row-3 .glyphicon-ban-circle')
    expect(page).to have_selector('#admin-row-1 .glyphicon-edit')
    expect(page).to have_selector('#admin-row-3 .glyphicon-trash')
    find('#admin-row-3 .glyphicon-edit').click
    expect(page).to have_selector('#admin-row-3 .glyphicon-check')
    expect(page).to have_selector('#admin-row-3 .glyphicon-remove')
    find('#admin-row-3 .glyphicon-check').click
    expect(page).to have_selector('#admin-row-3 .glyphicon-trash')
    find('#admin-row-1 .glyphicon-ban-circle').click
    expect(page).to have_css('.modal', text: 'Lock Admin?')
    find('.btn-primary.confirm').click
    expect(page).to have_content "Can't lock yourself."
    find('#admin-row-2 .glyphicon-ok-circle').click
    expect(page).to have_css('.modal', text: 'Unlock Admin?')
    find('.btn-primary.confirm').click
    expect(page).to have_selector('#admin-row-2 .glyphicon-ban-circle')
  end

【问题讨论】:

    标签: ruby-on-rails-4 active-model-serializers json-api


    【解决方案1】:

    此时可能已解决,但以防万一...我认为您想使用 ActiveModelSerializers.config.key_transform = :dash 而不是 :unaltered

    【讨论】:

      【解决方案2】:

      将 gem 指向 master 并修复了这个问题:

      gem 'active_model_serializers', github: 'rails-api/active_model_serializers', branch: :master
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-01
        • 2016-08-26
        • 2014-11-29
        • 2018-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多