У меня есть проект Java, который использует ArgumentCaptor для того, чтобы утверждать вызовы к конкретному фиктивному объекту (заглушке). Есть ли в Rails эквивалентный Rspec ArgumentCaptor?
Я хочу иметь возможность смоделировать модель ActiveRecord и сравнить утверждать аргументы, переданные в вызов сохранения.
Обновление 1
Вот пример кода Java, который использует ArgumentCaptor. Обратите внимание на возможность украшения макета, чтобы собрать все объекты, которые передаются тестируемому методу, и затем утверждать их.
@Test
public void should_import_all_tax_treatment_domain_data() throws Exception {
// Arrange
this.mockInputStream("DOMAIN-treatment.json");
// Act
this.importService.runImport("DOMAIN-treatment.json");
// Assert
ArgumentCaptor<TaxTreatment> argument = ArgumentCaptor.forClass(TaxTreatment.class);
verify(this.taxTreatmentRepositoryMock, times(9)).findByCode(anyString());
verify(this.taxTreatmentRepositoryMock, times(9)).save(argument.capture());
assertEquals("Withhold All", argument.getAllValues().get(0).getName());
assertEquals("Withhold", argument.getAllValues().get(1).getName());
assertEquals("Pay Cash", argument.getAllValues().get(2).getName());
assertEquals("None", argument.getAllValues().get(3).getName());
assertEquals("Sell All", argument.getAllValues().get(4).getName());
assertEquals("Sell for Taxes", argument.getAllValues().get(5).getName());
assertEquals("Swap", argument.getAllValues().get(6).getName());
assertEquals("Debit Rtl Acct", argument.getAllValues().get(7).getName());
assertEquals("Payroll Deduction", argument.getAllValues().get(8).getName());
}