RSPEC期望哈希包含一系列键值对



仍然整体学习RSPEC,所以感谢您的耐心等待。

返回值是这样:

{ supermodel: {
    'id': 1,
    'name': 'J',
    'model_attributes': [
        {attr1: 'T', attrA: 1}, 
        {attr2: 'F', attrB: 2}, 
        {attr3: 'T', attrC: 3}
        ],
    }
}

试图获得一个期望,说一个名为" model_attributes"的哈希键包含一个数组的值,其中包含以下键值对- {attr2:F, attrB: 2}{attr3: T, attrC: 3}

欢迎任何见解。

describe 'Stuff' do
  let(:model_attributes) do
    [
      {attr1: 'T', attrA: 1}, 
      {attr2: 'F', attrB: 2}, 
      {attr3: 'T', attrC: 3}
    ]
  end
  let(:result) do
    { supermodel: 
      {
        'id': 1,
        'name': 'J',
        'model_attributes': model_attributes
      }
    }
  end
  it 'has the correct model_attributes value' do
    expect(result.dig(:supermodel, :model_attributes)).to eq(model_attributes)
  end
end

尝试

describe 'ModelAttributes' do
  let(:model_attributes) { [{ attr1: 'T', attrA: 1 },
                            { attr2: 'F', attrB: 2 },
                            { attr3: 'T', attrC: 3 }] }
  it 'includes the required attributes' do
    expect(model_attributes).to include({ attr2:'F', attrB: 2 }, { attr3: 'T', attrC: 3 })
  end
end

回想起来,这很容易。简单地穿越哈希并期望值是最简单的方法。重构使我做到这一点:

supermodel[:model_attributes].each do |attr|
    expect(attr[:attrB])to be 2
end

感谢所有建议,带领我走上了正确的道路。

最新更新