Test de l'unité (de mvc) -problem avec les rôles
-
15-10-2019 - |
Question
Je demande et je mvc travaille avec des objets poco et unité d'écriture test. Le problème est que tout mon échec du test quand ils atteignent cette ligne de code Roles.IsUserInRole ( « someUser », « rôle »). Dois-je mettre en œuvre la nouvelle interface ou un référentiel pour les rôles ou ...? Thx
La solution
J'ai eu le même problème en essayant de se moquer de la fonctionnalité Roles.IsUserInRole dans mes tests unitaires codés. Ma solution a été de créer une nouvelle classe appelée RoleProvider et une interface avec la méthode IsUserInRole qui a ensuite appelé le System.Web.Security.Roles.IsUserInRole:
public class RoleProvider: IRoleProvider
{
public bool IsUserInRole(IPrincipal userPrincipal)
{
return System.Web.Security.Roles.IsUserInRole(userPrincipal.Identity.Name, "User");
}
}
Alors dans mon code j'appelle la méthode RoleProvider IsUserInRole. Comme vous avez une interface, vous pouvez alors se moquer de la IRoleProvider dans vos tests, par exemple montré ici utilise Rhino Mocks:
var roleProvider = MockRepository.GenerateStub<IRoleProvider>();
roleProvider.Expect(rp => rp.IsUserInRole(userPrincipal)).Return(true);
Hope this helps.
Autres conseils
Vous pouvez configurer une méthode personnalisée pour vérifier les rôles qui se comportent différemment dans les tests, mais je préfère avoir les essais mis en place un contexte qui travaillera avec les méthodes standard.