Проверьте, что запись является дубликатом другой записи в RSpec - PullRequest
0 голосов
/ 17 мая 2019

В моем приложении Rails, протестированном с RSpec, я тестирую функцию, которая вызывает .dup() для некоторых записей и сохраняет дубликаты. Как проверить, что вновь созданные записи являются дубликатами ожидаемых исходных записей?

Я сомневаюсь, что есть утверждение для этого конкретного случая. И я всегда могу убедиться, что дубликаты и исходные записи имеют одинаковые значения для своих атрибутов, но разные записи. Мне интересно, есть ли более элегантный, приемлемый шаблон для такого рода испытаний.

Ответы [ 2 ]

6 голосов
/ 17 мая 2019

Вы можете использовать утверждение have_attributes.

match_attributes = first_user.attributes.except(:id, :created_at, :updated_at)

expect(second_user).to have_attributes(match_attributes)
0 голосов
/ 17 мая 2019

Вы можете сделать это следующим образом:

 it 'creates a duplicate' do 
    record = Record.find(1) 
    new_record = record.dup
    new_record.save 
    expect(Record.where(id: [record.id,new_record.id], 
           **new_record.attributes.except(:id, :created_at, :updated_at)
           ).count
    ).to eq 2
 end

Это должно количественно определить дублирование и постоянство обеих записей в одном кадре.

...