仍在学习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}
。
欢迎任何见解。
答案 0 :(得分:2)
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
答案 1 :(得分:0)
尝试
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
答案 2 :(得分:0)
回想起来,现在这已经很容易了。简单地遍历哈希并期望值是最简单的方法。重构使我最终做到了这一点:
supermodel[:model_attributes].each do |attr|
expect(attr[:attrB])to be 2
end
感谢所有的建议,让我走上了正确的道路。