c # Nsubstitude Mock статический класс и статический метод - PullRequest
0 голосов
/ 14 июня 2019

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

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

public static class MyClass
{
    public static response MyMethod(HttpSessionStateBase Session, 
    otherVariable, stringVariable)
    {
        //some code
    }
}

public ActionResult MyClassTested()
{
    var response = MyClass.MyMethod(Session);
    //more code
}

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

1 Ответ

0 голосов
/ 17 июня 2019

Если вы не можете изменить код, то я не думаю, что можно обойти это, используя библиотеки на основе DynamicProxy, такие как NSubstitute.Эти библиотеки используют наследование для перехвата членов в классах , что невозможно для статических и не виртуальных членов.

Я предлагаю попробовать Fakes .Один из примеров на этой странице охватывает заглушку DateTime.Now.

Другие альтернативы, которые могут издеваться над статическими членами, включают TypeMock и Telerik JustMock.

Смежный вопрос: https://stackoverflow.com/q/5864076/906

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...