2010-08-02 5 views
0

J'ai code comme ceci:Tests d'intégration, comment puis-je envelopper un appel REST qui modifie les données dans une transaction?

[Fact] 
public void should_return_at_least_3_users() 
{ 
    Rest.Call("http://localhost/admin/users/makeasfree/3"); 

    var response = Rest.Call<List<Users>>("http://localhost/admin/freeusers"); 
    response.Count.ShouldBeGreaterThan(0); 
} 

J'ai essayé d'entourer cela avec TransactionScope mais ne fonctionne pas. Il existe un moyen d'annuler les modifications de test sans effectuer une restauration complète de la base de données?

Répondre

0

Il est peu probable qu'il existe de bonnes solutions à ce problème car la prise en charge de transactions de validation réparties en deux phases sur des requêtes HTTP viole la nature sans état des requêtes http. Les transactions peuvent vivre derrière une interface REST, mais elles ne doivent pas être mises en avant. Je réalise que vous voulez seulement que les transactions vous permettent de faire des tests d'intégration, mais que vous voulez vraiment faire des tests d'intégration en utilisant un environnement qui n'est pas le même que votre environnement de production.

Et si vous n'êtes toujours pas convaincu, alors vous devriez regarder this vidéo :-).

Questions connexes