У меня есть контроллер импорта в рельсах, который импортирует несколько CSV-файлов с несколькими записями в мою базу данных. Я хотел бы проверить в RSpec, если записи действительно сохраняются с помощью RSpec:Как сказать «any_instance» «should_receive» любое количество раз в RSpec
<Model>.any_instance.should_receive(:save).at_least(:once)
Однако я получаю ошибку говоря:
The message 'save' was received by <model instance> but has already been received by <another model instance>
надуманный пример контроллера:
rows = CSV.parse(uploaded_file.tempfile, col_sep: "|")
ActiveRecord::Base.transaction do
rows.each do |row|
mutation = Mutation.new
row.each_with_index do |value, index|
Mutation.send("#{attribute_order[index]}=", value)
end
mutation.save
end
Можно ли проверить это с помощью RSpec или есть ли какое-либо обходное решение?
Какая версия RSpec вы используете и какое сообщение об ошибке вы видите? –
rspec (2.8.0), и сообщение: сообщение «сохранить» было получено <экземпляром модели>, но уже получено <другим экземпляром модели> –
. Это ожидаемое поведение. Точка any_instance заключается в том, чтобы не знать, какой единственный экземпляр ожидает что-то, но он все еще ограничивает его одним экземпляром. –