Похоже, вы тестируете только один атрибут вашего сериализатора - image-url
.Вы пытались добавить ожидание того, что возвращает receipt_partial
?Вы можете сохранить частичную квитанцию в методе в своем тесте, используя что-то вроде:
def receipt_partial
@receipt_partial ||= ReceiptPartial.new(receipt_id: receipt_id)
end
, а затем обновить тест, чтобы он выглядел следующим образом:
describe ReceiptPartialSerializer do
let(:id) { 1 }
let(:image_url) { 'https:/images/original/missing.png' }
let(:receipt_id) { 1 }
let(:receipt_partial) { receipt_partial }
subject { JSONAPI::Serializer.serialize(receipt_partial) }
it { is_expected.to have_jsonapi_attributes('image-url' => image_url) }
it { is_expected.to have_jsonapi_attributes('receipt_partial' => receipt_partial) }
def receipt_partial
@receipt_partial ||= ReceiptPartial.new(receipt_id: receipt_id)
end
end
Вы захотитепроверьте, принимает ли have_jsonapi_attributes
массив, и если это так, вы можете объединить этот оператор ожидания в одно большое ожидание всех аргументов вашего сериализатора.
Кроме того, согласно моему ответу здесь ,Я считаю, что сериализаторы должны тестироваться с явными ожиданиями того, что возвращается, вместо того, чтобы проверять, включен ли данный атрибут.Я впервые вижу помощника have_jsonapi_attributes
, так что, если это так, то отлично.В противном случае, возможно, стоит скорректировать ваш тест для явных ожиданий того, что будет возвращено.