仍然整体学习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
感谢所有建议,带领我走上了正确的道路。