Das Problem ... Der Versuch, einen Test zu erstellen, die optimistische Sperren zeigt, dass das Speichern verhindert aber die Aktion des Sparens tatsächlich erhöht den ActiveRecord::StaleObjectError: Attempted to update a stale object: Invoice
Fehler, den Test zu sprengen. Wie kann ich die letzte Zeile des Tests ändern, um dies korrekt auszudrücken?optimistische Sperren Einheit Test Minitest
test "optimistic locking prevents save" do
merchant = create(:merchant)
invoice = Invoice.new(amount: 9.99,
currency: "USD",
item_count: 1,
invoice_id: build(:invoice).invoice_id,
merchant_id: merchant.merchant_id,
invoice_type: 'post-flight',
invoice_details_attributes: [
{
description: 'Detail1',
item_quantity: 1,
item_amount: 9.99,
detail_total: 9.99
}
],
trips_attributes: [
{
passenger_first_name: 'Josh',
passenger_last_name: 'Smith',
depart_airport: 'MCI',
arrive_airport: 'SAN',
departure_date: 10.days.from_now,
passenger_count: 10
}
])
invoice.save!
first = Invoice.find(invoice.invoice_id)
second = Invoice.find(invoice.invoice_id)
first.currency = "GBP"
second.currency = "EUR"
first.save
second.save
assert_equal ActiveRecord::StaleObjectError, Exception
end
Ich habe versucht ...
rescue Exception => e
puts $!.to_s
assert_equal ActiveRecord::StaleObjectError, e
end
Aber ich bin immer Syntaxfehler.
assert_not second.save
Keine Chance, auszulösen, wie die Tests Fehler aus, bevor es tatsächlich sagt "Ja, es hat nicht gespeichert."
Ich hatte das gerade herausgefunden und wollte die Antwort aufschreiben. Danke, dass du mich dafür geschlagen hast! – CheeseFry