Вопрос

Я использую этот код для настройки моего приложения MVC в [Test] (для перезарядки и перемещения в [SETUP] ETC.):

// arrange
var mockSomeService = new Mock<ISomeService>();
mockSomeService.Setup(m => m.IsTrue()).Returns(false);   
RouteConfig.RegisterRoutes(RouteTable.Routes);
FilterProviders.Providers.Add(new FilterProvider(mockSomeService.Object));
var controller = new HomeController();

// act
var result = controller.Index() as ViewResult;
.

По какой-то причине авторизеаэуэаттрибут, определенный в FilterProvider, никогда не пинает, но когда я проверяю приложение MVC вручную, он работает нормально.Я упускаю что-то с точки зрения настройки в этом тесте интеграции?

Это было полезно?

Решение

Фильтры вызываются как часть трубопровода запроса, поэтому они не будут запущены прямым вызовом метода действия, поскольку вы попали в ваш тест.

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

Другие советы

Я работал над библиотекой, чтобы помочь тестировать приложение ASP.NET-MVC со всеми там фильтрами, валидаторами, маршрутизацией и аутентификацией.В этом примере показано, как добавить пользовательский провайдер фильтра.Чтобы использовать его, вам нужно добавить пакет Nuget Xania.aspnet.simulator.

using Xania.AspNet.Simulator;
.....

[Test]
public void CustomFilterProviderTest()
{
    // arrange
    var action = new AccountController().Action(c => c.ChangePassword(null));
    action.FilterProviders.Add(new CustomFilterProvider());

    // act
    var result = action.Execute();

    // assert
    Assert.AreEqual("Your Message", result.ViewBag.Message);
    Assert.IsTrue(result.ModelState.IsValid);
    Assert.IsInstanceOf<ViewResult>(result.ActionResult);
    ...
}
.

Больше примеров можно найти в Github https://github.com/ibrahimbensalah/xania.Aspnet.Simulator / Tree / Master / Xania.aspnet.simulator.tests

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top