У меня есть объект отчета с именем SiegeReport, который выполняет некоторые вычисления и возвращает целочисленный объект. Когда в здании нет воина , тогда siege_ability равно 0. Сам код здесь не важен, потому что он отлично работает в консоли и в приложении. Заводы, изготовленные factory_bot , работают нормально во всех других примерах. У меня просто проблема с тестированием метода:
require 'rails_helper'
RSpec.describe Reports::SiegeReport do
subject(:siege_report) { Reports::SiegeReport.new(building: building).call }
let(:building) { create(:building, granary: 100) }
let(:clan) { create(:clan) }
context 'with 1 infantry' do
let(:warrior) { create(:warrior, clan_id: clan.id, building_id: building.id) }
it 'returns 9' do
expect(siege_report).to eq(9)
end
end
end
RSpec возвращает:
Reports::SiegeReport siege ability with 1 infantry returns 9
Failure/Error: expect(siege_report).to eq(9)
expected: 9
got: 0
(compared using ==)
Я проверил это с помощью pry и воин объект действителен, даже building.warriors возвращает воин, но в атрибутах число воинов по-прежнему равно 0. Тот же самый пример работает, когда я набираю его вручную в консоли. Как я могу RSpec обновить атрибуты здания перед тестированием?