RSpec/Mongoid: ожидается изменение количества встроенных моделей
У меня есть две модели Mongoid: User и EmailAccounts. Последнее встроено в модель User. Эта конфигурация должна быть в порядке, потому что она работает в целом. Сейчас я пытаюсь написать интеграционный тест для моей пользовательской формы редактирования, которая выглядит следующим образом:
describe 'Add EmailAccount' do
it 'Adds an email account', js: true do
user = FactoryGirl.create(:user_without_email_accounts)
visit edit_user_path(user)
expect{
click_link 'New Email Account'
within '.nested-fields' do
fill_in 'Account Name', with: 'New Email Account'
fill_in 'Other Field', with: 'Other Data'
end
click_button 'Save'
}.to change(EmailAccount, :count).by(1)
end
end
Поскольку EmailAccount является встроенной моделью, изменение количества всегда равно 0. Могу ли я проверить изменение счетчика EmailAccount любым другим способом? Или я должен идти другим путем? Это не будет работать ни:
}.to change(user.email_accounts, :count).by(1)
3 ответа
У меня была точно такая же проблема, и мне удалось решить ее, используя комбинацию ответов, размещенных здесь.
expect {
#action
}.to change { foo.reload.bars.count }.by(1)
Отредактировано с новым ответом:
Я смог использовать этот синтаксис в моей спецификации документа Mongoid:
expect {
#action
}.to change { Model.count }.by(1)
Обратите внимание, что оператор count находится в скобках и не использует параметр:count.
Попробуйте следующее:
user.reload
}.to change(user.email_accounts, :count).by(1)