Я бы сказал, что тестирование конкретной детали реализации является анти-паттерном и абсолютно бесполезным.Проведение неудачного теста после рефакторинга не имеет смысла, если результат остается верным.
Кроме того, я бы сделал следующее, чтобы проверить, вызывается ли определенный метод:
subject(:generator) { UsersXmlGenerator.new(data) }
before do
allow(generator).to receive(:add_product_data).and_return_original
end
it 'calls `add_product_data`' do
generator.create_file
expect(generator).to have_received(:add_product_data)
end