2010-12-12 5 views
4

사용자가 등록 할 수있는 ASP.NET MVC 3 사이트를 구축 중입니다. 그 목적으로 내장 (정적) Membership 클래스를 사용하고 있습니다. 어떤 사람들은 부풀어 오르다는 말을하지만 쉽게 잘 작동합니다.모의 방법 ASP.NET MVC의 멤버쉽 클래스를 사용하여 테스팅 가능

public class AdminService : IAdminService 
{ 
    public void DeleteUser(string username) 
    { 
     Membership.DeleteUser(username); 
    } 
} 

이 잘못 같이 회원 클래스를 사용 : 사용자 계정 관련 기능을 처리하고의 그것이 하나의 방법을 가지고있는 질문에 대해 생각하게됩니다

어쨌든, 시작했습니다 작성 및 AdminService 클래스 2 가지 방법 : IoC를 통해 주입 할 수 없으며 회원 등급을 모의 할 수 없기 때문에 IAdminService에 대한 스펙 (테스트)을 작성하는 것이 점점 어려워지고 있습니다.

내 자신을 롤업하지 않고도 ASP.NET Membership 클래스를 테스트 친숙하고 의존성 주입에 적합하게 만들 수있는 방법이 있습니까? 이 기능에 관해서

는 회원 클래스는, 더 중요한 것은, 지금 작동 는, 그래서 그것은 단지 저를 느리게하는 것처럼 내 자신의는 MembershipProvider을 쓰기 시작 정말 싫어 해요 잘 작동합니다.

답변

3

비어 있지 않은 ASP.NET MVC 3 프로젝트를 만들면 Models 폴더에 AccountModels.cs 파일이 생성됩니다. 여기에는 단위 테스트를 사용하기 위해 멤버쉽을 처리하는 방법에 대한 샘플이 있습니다.

public interface IMembershipService 
{ 
    int MinPasswordLength { get; } 

    bool ValidateUser(string userName, string password); 
    MembershipCreateStatus CreateUser(string userName, string password, string email); 
    bool ChangePassword(string userName, string oldPassword, string newPassword); 
} 
+0

Thanks UserControl; 나는 보통 자체 제작 "템플릿"으로 시작하고 IMembershipService 인터페이스에 대해서는 완전히 잊어 버렸습니다. –

0

MVC 사이트를 구축 할 때와 같은 상황이 발생하여 내 테스트 할 수있는 프로 바이더를 롤업하는 결과를 낳았습니다.

즉, 한 가지 옵션은 예제 구현을 here에서 들어 올리는 것입니다. 이론적으로는 FakeProvider를 빌드하고 다양한 반환 방법을 하드 코딩하여 SQL 데이터베이스를 공격 할 수 있습니다.

이들 중 하나의 메소드의 총 수는 꽤 가벼우 며,이를 위조하려고 할 때 주변에있는 것이 좋지 않습니다.