0
Я использую заводскую девушку для создания своих объектов. Я задаюсь вопросом, почему я должен сделать следующее:Rspec Change Matcher и заводская девушка
RSpec.describe V1::SlotsController, type: :controller do
let(:valid_slot) { create(:slot) }
let(:valid_attributes) { attributes_for(:slot) }
describe "DELETE destroy" do
it "destroys the requested slot" do
slot = Slot.create! valid_attributes # not working without this line
expect {
delete :destroy, { id: slot.id }
}.to change(Slot, :count).by(-1)
end
end
end
Если я не перезаписывать слот, и использовать только один созданный factory_girl, тест не пройдет. Почему так?
Удивительный, спасибо. Сохраняется ли (разумно) производительность, чтобы всегда использовать let! (например, GET, PATCH) или использовать его только при необходимости (например, DELETE)? – einSelbst
Вам следует избегать создания ненужных записей в тестах для более быстрого тестирования. В вашем примере перед запуском блока ожидания должен быть создан 'slot'. Но будьте осторожны, здесь 'let!' Выходит из 'описания 'DELETE destroy' ', и если вы добавите больше описаний, тогда' slot' будет создаваться каждый раз, даже если он не используется. – gotva