MVC3 Moq контроллер аккаунта c # nUnit - PullRequest
0 голосов
/ 20 сентября 2011

Я пытаюсь выучить Moq, но это оказывается несколько сложным.

Если я хочу реализовать некоторые базовые тесты с использованием nUnit и Moq для контроллера учетных записей в новом проекте MVC3, как мне это сделать??

Я привык к структуре лица.но не создаю интерфейсы для него.

edit: я понимаю теорию всего этого и необходимость сделать это, но реализация этого сбивает меня с толку

Я использовал генератор кода объекта (dbContext) для генерации кода, который я могу использовать для интерфейсов

1 Ответ

0 голосов
/ 20 сентября 2011

Хорошо, вот хороший тест: когда вы регистрируете нового пользователя, вы хотите убедиться, что он будет автоматически подписан на сайте, поэтому ему не нужно вводить свое имя пользователя и пароль снова.

Тест будет выглядеть примерно так:

public void AutomaticallySignedInAfterRegistering()
{
    var membershipService = new Mock<IMembershipService>();
    var formsService = new Mock<IFormsAuthenticationService>();
    RegisterModel newUser = new RegisterModel();
    newUser.UserName = "John"
    newUser.Email = "john@somewhere.com"
    newUser.Password = "p@ss";
    newUser.ConfirmPassword = "p@ss";

    membershipService.Setup(x => x.CreateUser("John", "p@ss", "john@somewhere.com")).Returns(MembershipCreateStatus.Success);

    AccountController controller = new AccountController();
    controller.FormsService = formsService.Object;
    controller.MembershipService = membershipService.Object;

    controller.Register(newUser);

    formsService.Verify(x => x.SignIn("John", false), Times.Once());
} 

Ключом здесь является метод Verify.Это работает так же, как Assert.В этом случае вы проверяете, что метод SignIn был вызван ровно один раз.Это пример того, как использовать макеты, чтобы проверить, работает ли контроллер учетных записей должным образом.

...