Задать вопрос
@artshelom

Как тестировать cookie в xUnit?

Делаю тестирование, но когда нужно добавить cookie, пишет ошибку:
NullReferenceException: "Object reference not set to an instance of an object."


Вот сам код для тестирования:
var testsP = await controller.GetAllTest();
            var testsView = Assert.IsType<ActionResult<List<TestView>>>(testsP);
            var testsVw = Assert.IsType<OkObjectResult>(testsView.Result);
            var tests = Assert.IsAssignableFrom<List<TestView>>(testsVw.Value);


            controller.Response.Cookies.Append("test", new Mock<string>().Object) // Ошибка тут, выдают такую же ошибку в контроллере при добавление cookie
  • Вопрос задан
  • 214 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
0. У вас Response или Cookies = null
1. Что вы вообще хотите протестировать?
2. Зачем вы пытаетесь сделать Response.Cookies.Append
3. Гуглите asp net core integration tests
https://www.dotnetcurry.com/aspnet-core/1420/integ...
https://docs.microsoft.com/en-us/aspnet/core/test/...
https://www.syncfusion.com/blogs/post/how-to-integ...
Ответ написан
Комментировать
ImmortalCAT
@ImmortalCAT
C# loving
Мок заполнение запроса и ответа у контроллера
Добавь куки в httpResponse и httpRequest
Не знаю насколько это правильно, но делаю себе моки такие
#region Mock

            // Not working - IsAjaxRequest() is static extension method and cannot be mocked
            // request.Setup(x => x.IsAjaxRequest()).Returns(true /* or false */);
            // use this

            var httpResponse = new Mock<HttpResponseBase>();
            httpResponse.SetupGet(x => x.Headers).Returns(
                new System.Net.WebHeaderCollection {
                    {"X-Requested-With", "XMLHttpRequest"}
                });

            var httpRequest = new Mock<HttpRequestBase>();
            httpRequest.SetupGet(x => x.Headers).Returns(
                new System.Net.WebHeaderCollection {
                    {"X-Requested-With", "XMLHttpRequest"}
                });
            httpRequest.SetupGet(x => x.IsAuthenticated).Returns(false);
            httpRequest.SetupGet(x => x.ServerVariables).Returns(new NameValueCollection());
            httpRequest.SetupGet(x => x.UserHostAddress).Returns("192.168.1.1");

            var context = new Mock<HttpContextBase>();
            context.SetupGet(x => x.Request).Returns(httpRequest.Object);
            context.SetupGet(x => x.Response).Returns(httpResponse.Object);
            context.SetupGet(x => x.User).Returns(new CustomPrincipal(""));

            controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
            #endregion
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы