2015-06-23 13 views
7

Ho due test di unità che utilizzano TypeMock Isolator per isolare e simulare un metodo da SqlMembershipProvider di asp.net.TypeMock Isolator: WillThrow() sanguina attraverso i limiti dei test unitari?

Nella prova 1 ho:

 Isolate.WhenCalled(
      () => 
       Membership.CreateUser(...))) 
      .WithExactArguments() 
      .WillThrow(new Exception()); 

Nella prova 2 ho:

 Isolate.WhenCalled(
      () => 
       Membership.CreateUser(...))) 
      .WithExactArguments() 
      .WillReturn(new MembershipUser(...)); 

Quando corro ogni test per sé entrambi passano correttamente.

Quando eseguo entrambi i test, il numero di test 1 piste prima e passa, quindi il numero di test 2 piste e non riesce ad eccezione gettato in prova 1.

Perché l'istruzione di WillThrow() nel test 1 "sanguinare over" per test 2? Dopo tutto, il test 2 definisce esplicitamente un comportamento diverso - WillReturn()?

+1

Non hai incluso uno snippet completo, quindi ti farò l'ovvia domanda ... I test/classe sono stati contrassegnati con l'attributo 'Isolated', o stai chiamando' Isolator.Cleanup' per resettare il comportamento ? http://www.typemock.com/rule-missing-isolated-attribut – forsvarir

+0

@forsvarir Grazie. L'aggiunta dell'attributo '[Isolated]' ha risolto il problema. Ti piacerebbe postare questo come risposta in modo che io possa accettarlo? – urig

risposta

6

Se i comportamenti TypeMock stanno sanguinando tra i test, la prima cosa da verificare è che si sta effettuando la pulizia tra i test. È possibile farlo in modo esplicito chiamando lo Isolater.CleanUp() o utilizzando lo preferred approach che deve decorare i metodi di test o la classe di test stessa con l'attributo [Isolated].

Problemi correlati