Макет большого Частичного Класса - PullRequest
0 голосов
/ 14 мая 2018

Я хочу сделать модульный тест для метода Controller, который имеет 3 вызова базы данных. Но каждый вызов базы данных выполняется путем запроса большого файла Partial Class, который называется DAL. Класс Dal имеет около 70 методов! Должен ли я создать интерфейс с 70 методами, которые может использовать класс DAL; так что я могу сменить его? Или есть лучшее решение о том, как я могу издеваться над этим классом DAL?

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Существует бесплатная библиотека для M # Moq (mock-u или mock), которую можно получить через Nuget.Это позволяет очень мощное управление с помощью лямбда-выражений и различных проверочных вызовов.Вам не нужно указывать больше определений методов, чем нужно, и поведение каждого метода может быть полностью изменено за вызов.

https://www.nuget.org/packages/moq/

https://github.com/Moq/moq4/wiki/Quickstart

Я могу лично поручиться за Мока как за удивительного.

0 голосов
/ 14 мая 2018

Наличие одного огромного класса с 70 методами неизбежно приведет к возникновению подобных проблем.Без необходимости реорганизовывать ваш класс DAL, например, в небольших хранилищах, вы можете создать меньшие интерфейсы с несколькими методами, необходимыми для каждого контроллера, и ваш класс DAL реализует многие из этих меньших интерфейсов.После этого вы можете смоделировать только те интерфейсы, которые вам нужны, и ваш контроллер тоже будет зависеть от этого интерфейса.

Это может выглядеть примерно так:

interface A {
    void DoAThing();
}
interface B {
    void DoBThing();
}
class Mock : A {
    public void DoAThing() {
        //fake it till you make it       
    }
}
class DAL : A, B {
    //Way too many methods here
}
...