Тестирование пользовательского профиля для использования с членством ASP - PullRequest
2 голосов
/ 02 марта 2011

Я только что закончил реализацию базового членства asp в своем проекте MVC, и я собираюсь написать несколько тестов.У меня были некоторые начальные проблемы с издевательством над провайдером, но теперь это отсортировано.Очевидно, что по мере того, как провайдер подвергается насмешке, данных там нет, и вы не можете добавлять какие-либо данные, но профиль не может быть напрямую смоделирован, поскольку они создаются каждый раз, когда требуется профиль пользователя.Я не уверен, как подходить к их тестированию, поскольку (очевидно), когда вызывается профиль, он возвращает ноль.

Например:

При использовании DI вводится мой репозиторий:

    public AccountMembershipService(MembershipProvider provider)
    {
        _provider = provider ?? Membership.Provider;

    }

И давайте возьмем, к примеру, метод создания пользователя

    public MembershipCreateStatus CreateUser(string userName, string password, string email, string passwordQuestion, string passwordAnswer)
    {
        if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName");
        if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password");
        if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "email");

        MembershipCreateStatus status;
        _provider.CreateUser(userName, password, email, passwordQuestion, passwordAnswer, true, null, out status);

        if (status == MembershipCreateStatus.Success)
        {
            UserProfile profile = UserProfile.GetProfile(userName);
            profile.IPAddress = "0.0.0.0";
            profile.Save();
        }
        return status;
    }

.CreateUser работает отлично (что касается насмешек), но когда дело доходит до GetProfile, очевидно, что профиль не существует, поэтомуэто просто ошибки.Любые идеи о том, как я мог бы подойти к тестированию этого?

Я смотрю на это уже пару часов, любая помощь будет ДЕЙСТВИТЕЛЬНО оценена !!

1 Ответ

1 голос
/ 02 марта 2011

Обратите внимание на использование Pex Moles для замены метода Create класса Base UserProfile.

Другим вариантом может быть создание объекта службы, который выполняет вызов GetProfile (), который затем может быть абстрагирован и конкретный класс внедрен в AccountMembershipService во время выполнения или передан конструктору во время модульных тестов.

...