# Sinatra Test -- Come simulare il fallimento di Transazioni

**URL:** <https://www.ruby-forum.com/t/sinatra-test-come-simulare-il-fallimento-di-transazioni/186353>\
**Category:** IT\
**Created:** [April 5, 2010, 5:06pm UTC](https://www.ruby-forum.com/t/sinatra-test-come-simulare-il-fallimento-di-transazioni/186353 "2010-04-05T17:06:35Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![ialuronico](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/c4cdca/32.png) [@ialuronico](https://www.ruby-forum.com/u/ialuronico)\
**Post date:** [April 5, 2010, 5:06pm UTC](https://www.ruby-forum.com/t/sinatra-test-come-simulare-il-fallimento-di-transazioni/186353/1 "2010-04-05T17:06:35Z")

</div>

Salve a tutti,

scusate se vi disturbo ancora ma sono sempre alle prese con i Test di  
un applicazione Sinatra.

Questa volta quello che sto cercando di fare e’ di testare tutta  
la parte relativa alle transazioni ed ai fallimenti.

Finora il modo piu’ semplice che mi e’ venuto in mente e’ quello di  
spegnere il database mentre i test sono in corso … pero’  
sono sicuro che esiste una maniera piu’ intelligente per farlo

quello che voglio testare e’ il ritorno di un 500 nel caso in cui mi  
fallisca un update , una insert o una transazione

grazie Simone

---

<div class="post-metadata">

**Author:** ![ialuronico](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/c4cdca/32.png) [@ialuronico](https://www.ruby-forum.com/u/ialuronico)\
**Post date:** [April 6, 2010, 11:05am UTC](https://www.ruby-forum.com/t/sinatra-test-come-simulare-il-fallimento-di-transazioni/186353/2 "2010-04-06T11:05:31Z")

</div>

On Monday 05 April 2010 17:06:35 Simone R. wrote:

> Questa volta quello che sto cercando di fare e’ di testare tutta  
> la parte relativa alle transazioni ed ai fallimenti.  
> […]  
> quello che voglio testare e’ il ritorno di un 500 nel caso in cui mi  
> fallisca un update , una insert o una transazione

Il metodo piu’ semplice e’ quello di usare mocha.

Supponiamo di fare il tutto in un progetto rails:

class UserController \< ApplicationController  
def update  
@user = User.find params[:id]  
@user.update\_attributes params[:user]  
# more code  
end  
end

All’interno del tuo unit test:

test “errore 500 mentre faccio un update” do  
User.any\_instance.expects(:update\_attributes).once.raises(new  
Exception("hello world))  
put :update, :id =\> projects(:one).id, :project =\> { }  
end
