Заглушки доступа к защищенным переменным
Мне нужно проверить этот класс:
public abstract class GaBase
{
protected GoogleAnalyticsInfo GAInfo;
protected abstract void PopulateGAInfo();
public string GetGoogleAnalyticsTag()
{
//Return any info related to GAInfo
}
//Some other stuffs
}
Мне нужно провести модульное тестирование GetGoogleAnalyticsTag
метод, но мне нужно установить свойство GAInfo
чтобы проверить это правильно. В рабочем коде мы делаем это, используя мой PopulateGaInfo
метод, когда мы производные от этого класса.
Как я могу установить GAInfo
используя заглушки?
Вот мой метод испытаний:
public void MyTest1()
{
var ga = new StubGaBase()
{
PopulateGAInfo01 = () =>
{
// How can I set GAInfo here?
}
};
// The method I need to test
var script = ga.GetGoogleAnalyticsTag();
// My asserts
}
1 ответ
Существует шаблон, известный как "Подкласс-для-теста", который предлагает, если вам нужен доступ к методам или поведению (например, имитация возбуждения событий), вы бы вручную свернули заглушку / макет, демонстрирующий функциональность, необходимую для теста. Эта заглушка существует только в вашем тестовом проекте.
если вас интересует только тестирование защищенных переменных абстрактного класса, просто создайте производный класс и предоставьте метод, который выполняет работу и возвращает интересующие вас значения.