0

したがって、このメソッドが「ManagerEventsIndex」を返すケースをテストしようとしています。

    public ActionResult Index()
    {
        if (this.CurrentUser != null)
        {
            if (this.CurrentUser.Role.Name == AvailableRoles.GameManager)
            {
                var model = new GameManagerEventsIndexModel();
                model.NumLocationsOfCurrentUser = this._customerLocationDataProvider.GetAllForUserId(CurrentUser.Id)
                                                                                    .Where(x => x.Active == true)
                                                                                    .Count();
                return View("ManagerEventsIndex", model);
            }
            else
            {
                return View();
            }
        }
        else
            return View("PublicIndex");
    }

しかし、このコントローラーは別のコントローラー ApplicationController を次のように実装します: EventsController : ApplicationController。これをテストするためにモックする必要があるのは、Application コントローラー内の CurrentUser オブジェクトです... これまでのテスト メソッドは次のとおりです。ありがとう。

    [TestMethod]
    public void AssertGameManagerRoleReturnsGameManagerIndex()
    {
        // Arrange
        //eventsController = new EventsController(eventDataProvider.Object, playerEventDataProvider.Object, userDataProvider.Object,
                                                tokenAuthent.Object, dataContext.Object, customerLocationDataProvider.Object);

        var user = new Mock<User>();
        var role = new Mock<Role>();
        role.SetupSet(x => x.Name = "Ted");
        user.SetupSet(x => x.Role = role.Object);

        //?? var appController = new Mock<ApplicationController>();
        //?? appController.SetupSet(x => x.User = user);

        // var mController = new Mock<EventsController>();

        // Act
        var result = (ViewResult) eventsController.Index();

        // Assert
        Assert.AreEqual("ManagerEventsIndex", result.ViewName);
    }
4

1 に答える 1