Переопределить тело метода, используя Moq в .NET - PullRequest
0 голосов
/ 12 марта 2019

У меня есть контроллер веб-API с некоторой функцией GET, которую я хочу протестировать. Внутри этой функции GET есть открытый метод void SendCachingHeaders :

public void SendCachingHeaders(int cacheFor) {
            Request.HttpContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
            Request.HttpContext.Response.Headers.Add("Cache-Control", "max-age="+cacheFor+", public");
        }

В тестовом классе я создаю mockController :

var mockController = new Mock<IRawEntityController>();

SendCachingHeaders находится внутри контроллера, который реализует -> IRawEntityController

Итак, я хотел переопределить SendCachingHeaders тело метода с moq объектом, подобным этому:

mockController.Setup(
                x => x.SendCachingHeaders(It.IsAny<int>())).
                Callback(() =>
                {
                    int i; //just to do something irrelevant
                });

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

Совершенно ли я неправильно понял, что делает Callback , или я упускаю что-то очевидное?

Еще одна вещь -> когда я запускаю тест, значение cacheFor (аргумент метода SendCachingHeaders равно '5'. Вероятно, неактуальная информация.

Спасибо за любую помощь.

...