2009-04-12 7 views
4

Est-il possible de simuler la méthode FormsAuthentication.Authenticate ("nom d'utilisateur", "mot de passe") avec des informations d'identification de test? Mon objectif de test est de m'assurer que si l'authentification échoue, elle redirige vers l'emplacement correct. J'utilise Rhino Mocks comme cadre moqueur.Mocking la méthode FormsAuthentication.Authenticate()

Merci beaucoup pour votre aide,

Répondre

3

Je n'utilise Rhino Mocks, mais je pense qu'il est impossible de se moquer de méthodes statiques avec tout cadre moqueur .Net sauf Typemock. Le meilleur travail consiste à créer un adaptateur interfacé autour d'elle.

9

Puisque vous utilisez mvc, si vous créez un nouveau projet et regardez dans le code du contrôleur de compte, vous trouverez les précisions suivantes:

Le type FormsAuthentication est scellé et contient des membres statiques, il est donc difficile à unité de code de test qui appelle ses membres. L'interface et la classe d'assistance ci-dessous montrent comment créer un wrapper abstrait autour d'un tel type afin de tester l'unité de code AccountController .

En dessous, il y a ces déclarations:

public interface IFormsAuthentication 
public class FormsAuthenticationService : IFormsAuthentication 
public interface IMembershipService 
public class AccountMembershipService : IMembershipService 

Vous pouvez regarder des mises en œuvre dans le code mentionné.